zoukankan      html  css  js  c++  java
  • 341. 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].

     题目含义:给定一个嵌套的整数列表,实现一个迭代器将其展开。每一个元素或者是一个整数,或者是一个列表 -- 其元素也是一个整数或者其他列表。

     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     private List<Integer> flattenedList;
    20     private Iterator<Integer> it;
    21 
    22     public NestedIterator(List<NestedInteger> nestedList) {
    23         flattenedList = new LinkedList<Integer>();
    24         flatten(nestedList);
    25         it = flattenedList.iterator();
    26     }
    27     private void flatten(List<NestedInteger> nestedList) {
    28         for (NestedInteger i : nestedList) {
    29             if (i.isInteger()) {
    30                 flattenedList.add(i.getInteger());
    31             } else {
    32                 flatten(i.getList());
    33             }
    34         }
    35     }
    36 
    37     @Override
    38     public Integer next() {
    39         return it.next();
    40     }
    41 
    42     @Override
    43     public boolean hasNext() {
    44         return it.hasNext();
    45     }
    46 }
    47 
    48 /**
    49  * Your NestedIterator object will be instantiated and called as such:
    50  * NestedIterator i = new NestedIterator(nestedList);
    51  * while (i.hasNext()) v[f()] = i.next();
    52  */
     
  • 相关阅读:
    SharePoint 2010 Crawl Component Stuck in “Recovering” status
    什么是Named Pipes
    请不要修改FIM的配置, 否则SharePoint的User Profile无法获得微软支持
    经典的SharePoint 2010升级中的多核CPU冲突问题
    怎样才能比较方便地查看PowerShell里返回回来的对象的每个成员及它们的值呢?
    如何打开证书控制台
    浏览器: F5 和 Ctrl+F5的区别
    关于用户角色权限管理的探讨
    支付宝接口源代码
    海量数据处理
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7725784.html
Copyright © 2011-2022 走看看