next I will try graph arcade. I think graph problem is more difficult than intro.

https://leetcode.com/problems/longest-substring-with-at-least-k-repeating-characters/
Runtime: 3 ms, faster than 77.01% of Java online submissions for Longest Substring with At Least K Repeating Characters.
class Solution {
int max;
public int longestSubstring(String s, int k) {
max =0;
if(k>s.length()){return 0;}
findMax(s, k);
return max;
}
public void findMax(String s, int k){
int arr[] = new int['z' - 'a' +1];
// setting
for(int i=0; i<s.length(); i++){
int index = s.charAt(i) -'a';
arr[index]++;
}
// 전부다 k보다 더 큰 수가 나오는 경우는 max값을 갱신
if(allEqualOrBigger(arr, k)){
max = Math.max(max, s.length());
}else{
char[] str= new char[s.length()];
for(int i=0; i<s.length(); i++){
int index = s.charAt(i) -'a';
if(arr[index] == 0 ){
continue;
}else if(arr[index] >=k){ //
str[i] = s.charAt(i);
}else{
str[i] = ',';
}
}
String[] subs = new String(str).split(",");
for(int i=0; i<subs.length; i++){
if(subs[i].length() <= max){
continue;
}
findMax(subs[i], k);
}
}
}
public boolean allEqualOrBigger(int arr[], int k){
for(int i=0; i< arr.length; i++){
if(arr[i] >0 && arr[i]<k){
return false;
}
}
return true;
}
}
https://leetcode.com/problems/flatten-nested-list-iterator/discuss/?orderBy=recent_activity
Runtime: 6 ms, faster than 42.53% of Java online submissions for Flatten Nested List Iterator.
public class NestedIterator implements Iterator<Integer> {
Stack<NestedInteger> stack = new Stack<NestedInteger>();
public NestedIterator(List<NestedInteger> nestedList) {
for(int i= nestedList.size() -1; i>=0; i--){
stack.push(nestedList.get(i));
}
}
@Override
public Integer next() {
return stack.pop().getInteger();
}
@Override
public boolean hasNext() {
while(stack.size()>0){
NestedInteger nestedInteger = stack.peek();
if(nestedInteger.isInteger()){
return true;
}else{
nestedInteger = stack.pop();
List<NestedInteger> list = nestedInteger.getList();
for(int i=list.size()-1; i>=0; i--){
//stack.push(list.get(i));
if(list.get(i).isInteger()){
stack.push(list.get(i));
}else{
if(list.get(i).getList().size()>0){
stack.push(list.get(i));
}
}
}
}
}
return false;
}
}