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  */
     
  • 相关阅读:
    Vulnhub系列:Tomato(文件包含getshell)
    Linux基础之终端、控制台、tty、pty简介说明
    linux服务器之间传输文件的四种方式
    Vulnhub系列:Os-hackNos
    [GXYCTF2019]BabyUpload
    CVE-2018-12613
    [MRCTF2020]Ez_bypass
    [BUUCTF 2018]Online Tool
    [BJDCTF 2nd]fake google
    [网鼎杯 2020 青龙组]AreUSerialz
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7725784.html
Copyright © 2011-2022 走看看