zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 341 扁平化嵌套列表迭代器

    341. 扁平化嵌套列表迭代器

    给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。

    列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。

    示例 1:

    输入: [[1,1],2,[1,1]]
    输出: [1,1,2,1,1]
    解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。
    示例 2:

    输入: [1,[4,[6]]]
    输出: [1,4,6]
    解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,4,6]。

    /**
     * // 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> list = new ArrayList<>();
        private int index;
    
        private void add(List<NestedInteger> nestedList) {
            for (NestedInteger nestedInteger : nestedList) {
                if (nestedInteger.isInteger()) {
                    list.add(nestedInteger.getInteger());
                } else {
                    add(nestedInteger.getList());
                }
            }
        }
    
        public NestedIterator(List<NestedInteger> nestedList) {
            add(nestedList);
        }
    
        @Override
        public Integer next() {
            return list.get(index++);
        }
    
        @Override
        public boolean hasNext() {
            return index < list.size();
        }
    }
    
    /**
     * Your NestedIterator object will be instantiated and called as such:
     * NestedIterator i = new NestedIterator(nestedList);
     * while (i.hasNext()) v[f()] = i.next();
     */
    
  • 相关阅读:
    指令汇B新闻客户端开发(三) 下拉刷新
    安卓消息推送解决方案
    java常用的7大排序算法汇总
    内存溢出的解决方案
    指令汇B新闻客户端开发(二) 主页面布局
    指令汇B新闻客户端开发(一) 新手引导页开发
    2015最流行的Android组件、工具、框架大全
    安卓开发过程中空指针的问题Java.lang.NullPointerException
    闪屏页面开发遇到的问题you need to use a theme.appcompat theme (or descendant)
    8、杂散性问题
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075205.html
Copyright © 2011-2022 走看看