341. Flatten Nested List Iterator

A question before this is the Nested List Weight Sum, and it requires recursion to solve. As it carries to this problem that we will need recursion to solve it. But since we need to access each NestedInteger at a time, we will use a stack to help.

這題我做的時候就覺得要是能用遞歸就好了,但是由于一次只能next()取一個,所以不知咋辦了??戳艘谎踫olutions,用了stack,然后去健身了,健身的時候想到了,就是把get到的東西不停的往stack里push,剛才自己試著實現(xiàn)了一下,代碼基本跟答案一致,但是我一開始想的是把hasNext里面的操作放到next()里面,但是那樣有個問題,如果是[[]]這種情況,我最終返回了一個null,它結(jié)果是[null],而需要的是[]。

所以,堆棧操作要放在hashNext里。

    Stack<NestedInteger> stack = new Stack<>();

    public NestedIterator(List<NestedInteger> nestedList) {
        for (int i = nestedList.size() - 1; i >= 0; i--) {
            stack.push(nestedList.get(i));
        }
    }

    @Override
    public Integer next() {
        return stack.pop().getInteger();
    }

    @Override
    public boolean hasNext() {
        while (!stack.isEmpty()) {
            //不可以直接pop
            NestedInteger ni = stack.peek();
            if (ni.isInteger()) {
                return true;
            }
            stack.pop();
            List<NestedInteger> list = ni.getList();
            for (int i = list.size() - 1; i >= 0; i--) {
                stack.push(list.get(i));
            }
        }
        return false;
    }

有空做一下Nested List Weight Sum這題。
今天要熬夜做ppt。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,927評論 0 33
  • 父愛,是一座山 深沉、堅韌、博愛, 父愛,是一片海 濃郁、包容、深遠 父愛,是一盞燈 指引、奉獻、溫暖 父愛,是一...
    貨車司機牛二哥閱讀 315評論 1 4
  • 三年攻關(guān),一朝得成。自紅羽大將被暗殺之后兩國軍中又有幾名將軍被暗殺,其余將令聽聞紛紛色變,能撤則撤。眾軍無人帶領(lǐng),...
    淳于恒閱讀 387評論 0 0
  • 我是農(nóng)村出來的,一直以來就是膽小、懦弱、怕事。直到現(xiàn)在,我才在和35mm君的聊天中明白:自己能走出去,也才能讓別人...
    東田南閱讀 283評論 2 0

友情鏈接更多精彩內(nèi)容