成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode341. Flatten Nested List Iterator

MartinHan / 1291人閱讀

摘要:題目要求假設(shè)有一個嵌套形式的數(shù)組,要求按照順序遍歷數(shù)組中的元素。思路和代碼首先可以想到通過深度優(yōu)先遞歸的方式將嵌套形式的數(shù)組展開為一個無嵌套的列表。

題目要求
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].

假設(shè)有一個嵌套形式的數(shù)組,要求按照順序遍歷數(shù)組中的元素。

思路和代碼

首先可以想到通過深度優(yōu)先遞歸的方式將嵌套形式的數(shù)組展開為一個無嵌套的列表。那么有沒有方法實現(xiàn)不將元素取出而是直接迭代的方式獲取下一個元素呢?這里采用了嵌套迭代器的方式進(jìn)行遍歷

    public class FlattenNestedListIterator_341 implements Iterator{

        private List nestedList;
        private Iterator iterator;
        private int next;
        private int index;
        public FlattenNestedListIterator_341(List nestedList){
            this.nestedList = nestedList;
        }
        
         @Override
        public Integer next() {
             return next;
        }

        @Override
        public boolean hasNext() {
            if(iterator != null && iterator.hasNext()){
                this.next = iterator.next();
                return true;
            }
            
            if(index>=nestedList.size()){
                return false;
            }
            
            NestedInteger n = nestedList.get(index++);
            if(n.isInteger()){
                next = n.getInteger();
            }else{
                iterator = new FlattenNestedListIterator_341(n.getList());
                if(iterator.hasNext()){
                    next = iterator.next();
                }else{
                    return hasNext();
                }
            }
            return true;
        }
}


想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~s

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69315.html

相關(guān)文章

  • leetcode 341 Flatten Nested List Iterator 以及其他Iter

    摘要:返回的是表示是否走到了結(jié)尾。起到的就是緩存作用,因為調(diào)用之后馬上就走到下一個了。如果調(diào)用,返回用得到和最初的輸入相同的做相同的步驟存入不斷拆開得到結(jié)果。思想就是來自括號,后面也會跟進(jìn)的專題 Iterator其實就是一個單鏈表,無法回頭看。java里很多數(shù)據(jù)結(jié)構(gòu)都有這個接口,使用時需要initalize,得到一個iterator. 調(diào)用next()返回的是一個object, 指向的是下一...

    chaosx110 評論0 收藏0
  • LeetCode 341. Flatten Nested List Iterator

    摘要:設(shè)計一個迭代器,使其能夠遍歷這個整型列表中的所有整數(shù)。列表中的項或者為一個整數(shù),或者是另一個列表。示例輸入輸出解釋通過重復(fù)調(diào)用直到返回,返回的元素的順序應(yīng)該是。 Description Given a nested list of integers, implement an iterator to flatten it. Each element is either an integ...

    mingzhong 評論0 收藏0
  • [LintCode/LeetCode] Flatten Nested List Iterator

    摘要:首先,根據(jù)迭代器需要不斷返回下一個元素,確定用堆棧來做。堆棧初始化數(shù)據(jù)結(jié)構(gòu),要先從后向前向堆棧壓入中的元素。在調(diào)用之前,先要用判斷下一個是還是,并進(jìn)行的操作對要展開并順序壓入對直接返回。 Problem Given a nested list of integers, implement an iterator to flatten it. Each element is either...

    spacewander 評論0 收藏0
  • [Leetcode] Flatten 2D Vector 整平二維向量

    摘要:另一個則是的迭代器,它負(fù)責(zé)記錄當(dāng)前到哪一個的迭代器了。每次時,我們先調(diào)用一下,確保當(dāng)前的迭代器有下一個值。代碼當(dāng)前列表的迭代器為空,或者當(dāng)前迭代器中沒有下一個值時,需要更新為下一個迭代器 Flatten 2D Vector Implement an iterator to flatten a 2d vector. For example, Given 2d vector = [ ...

    MageekChiu 評論0 收藏0
  • [LeetCode] 251. Flatten 2D Vector

    Problem Implement an iterator to flatten a 2d vector. Example: Input: 2d vector = [ [1,2], [3], [4,5,6] ] Output: [1,2,3,4,5,6] Explanation: By calling next repeatedly until hasNext returns fals...

    curried 評論0 收藏0

發(fā)表評論

0條評論

MartinHan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<