zoukankan      html  css  js  c++  java
  • LeetCode 341. Flatten Nested List Iterator

    原题链接在这里:https://leetcode.com/problems/flatten-nested-list-iterator/

    题目:

    Given a nested list of integers, implement an iterator to flatten it.

    Each element is either an integer, or a list -- whose elements may also be integers or other lists.

    Example 1:
    Given the list [[1,1],2,[1,1]],

    By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1].

    Example 2:
    Given the list [1,[4,[6]]],

    By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,4,6].

    题解:

    Stack<NestedInteger> stk 从后向前存储nestedList的每个item. hasNext() 拿出stk顶部item, 若不是Integer就把该item从后向前放回stk中.

    Note: [[]], in case of this, need to make sure the first is an integer.

    Time Complexity: next, O(1). hasNext, O(n).

    Space: O(n).

    AC Java:

     1 /**
     2  * // This is the interface that allows for creating nested lists.
     3  * // You should not implement it, or speculate about its implementation
     4  * public interface NestedInteger {
     5  *
     6  *     // @return true if this NestedInteger holds a single integer, rather than a nested list.
     7  *     public boolean isInteger();
     8  *
     9  *     // @return the single integer that this NestedInteger holds, if it holds a single integer
    10  *     // Return null if this NestedInteger holds a nested list
    11  *     public Integer getInteger();
    12  *
    13  *     // @return the nested list that this NestedInteger holds, if it holds a nested list
    14  *     // Return null if this NestedInteger holds a single integer
    15  *     public List<NestedInteger> getList();
    16  * }
    17  */
    18 public class NestedIterator implements Iterator<Integer> {
    19     
    20     Stack<NestedInteger> stk;
    21     public NestedIterator(List<NestedInteger> nestedList) {
    22         stk = new Stack<NestedInteger>();
    23         for(int i = nestedList.size()-1; i>=0; i--){
    24             stk.push(nestedList.get(i));
    25         }
    26     }
    27 
    28     @Override
    29     public Integer next() {
    30         return stk.pop().getInteger();
    31     }
    32 
    33     @Override
    34     public boolean hasNext() {
    35         while(!stk.isEmpty()){
    36             NestedInteger cur = stk.peek();
    37             if(cur.isInteger()){
    38                 return true;
    39             }
    40             
    41             stk.pop();
    42             for(int i = cur.getList().size()-1; i>=0; i--){
    43                 stk.push(cur.getList().get(i));
    44             }
    45         }
    46         return false;
    47     }
    48 }
    49 
    50 /**
    51  * Your NestedIterator object will be instantiated and called as such:
    52  * NestedIterator i = new NestedIterator(nestedList);
    53  * while (i.hasNext()) v[f()] = i.next();
    54  */

    类似Nested List Weight SumZigzag IteratorMini ParserFlatten 2D Vector.

  • 相关阅读:
    keras: 在构建LSTM模型时,使用变长序列的方法
    keras:Exception: Error when checking model target
    Scipy.sparse矩阵的存储,读取和转化为稠密矩阵
    Feature Selection 其一 —— Filter Approach
    超限学习机 (Extreme Learning Machine, ELM) 学习笔记 (一)
    [IR课程笔记]Web search
    [数据挖掘课程笔记]无监督学习——聚类(clustering)
    [IR课程笔记]Query Refinement and Relevance Feedback
    [IR课程笔记]Hyperlink-Induced Topic Search(HITS)
    DIARY10-05
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6440849.html
Copyright © 2011-2022 走看看