Simple DFS - beats 98% of all solutions 5 ms


  • 0
    A
    /**
     * // 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> {
        
        private List<Integer> flatList;
        private Iterator<Integer> iterator;
        
        public NestedIterator(List<NestedInteger> nestedList) {
            this.flatList = new ArrayList<Integer>();
            for(NestedInteger n : nestedList)
            {
                DFS(n);
            }
            
            this.iterator = this.flatList.iterator();
        }
        
        private void DFS(NestedInteger n)
        {
            if(n.getInteger() != null)
                this.flatList.add(n.getInteger());
            
            List<NestedInteger> list = n.getList();
            if(list != null && list.size() > 0)
            {
                for(NestedInteger x : list)
                 {
                    DFS(x);
                 }
            }
        }
    
        @Override
        public Integer next() {
            return this.iterator.next();
        }
    
        @Override
        public boolean hasNext() {
            return this.iterator.hasNext();
        }
    }
    
    /**
     * 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.