simple java solution


  • 0
    K

    /**

    • // This is the interface that allows for creating nested lists.

    • // You should not implement it, or speculate about its implementation

    • public interface NestedInteger {

    • // @return true if this NestedInteger holds a single integer, rather than a nested list.
      
    • public boolean isInteger();
      
    • // @return the single integer that this NestedInteger holds, if it holds a single integer
      
    • // Return null if this NestedInteger holds a nested list
      
    • public Integer getInteger();
      
    • // @return the nested list that this NestedInteger holds, if it holds a nested list
      
    • // Return null if this NestedInteger holds a single integer
      
    • public List<NestedInteger> getList();
      
    • }
      */
      public class NestedIterator implements Iterator<Integer> {

      Stack<NestedInteger> stack;
      public NestedIterator(List<NestedInteger> nestedList) {
      stack = new Stack<>();
      for (int i = nestedList.size() - 1; i >= 0; i--){
      NestedInteger nestedInteger = nestedList.get(i);
      stack.push(nestedInteger);

       }
      

      }

      @Override
      public Integer next() {
      if (hasNext()){
      if (stack.peek().isInteger()){
      return stack.pop().getInteger();
      } else {
      List<NestedInteger> list = stack.pop().getList();
      for (int i = list.size() - 1; i >= 0; i--){
      stack.push(list.get(i));
      }
      return next();
      }
      } else {
      return null;
      }
      }

      @Override
      public boolean hasNext() {
      return !stack.isEmpty();
      }
      }

    /**

    • Your NestedIterator object will be instantiated and called as such:
    • NestedIterator i = new NestedIterator(nestedList);
    • while (i.hasNext()) v[f()] = i.next();
      */

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.