国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Leetcode] Flatten 2D Vector 整平二維向量

MageekChiu / 940人閱讀

摘要:另一個則是的迭代器,它負責記錄當前到哪一個的迭代器了。每次時,我們先調用一下,確保當前的迭代器有下一個值。代碼當前列表的迭代器為空,或者當前迭代器中沒有下一個值時,需要更新為下一個迭代器

Flatten 2D Vector

Implement an iterator to flatten a 2d vector.

For example, Given 2d vector =

[
  [1,2],
  [3],
  [4,5,6]
] 

By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,2,3,4,5,6].

數組法 復雜度

時間 O(N) 空間 O(1)

思路

用一個數組表示每個List的迭代器,然后再記錄一個變量,用來表示當前用到了第幾個迭代器。

代碼
public class Vector2D {

    List> its;
    int curr = 0;
    
    public Vector2D(List> vec2d) {
        this.its = new ArrayList>();
        for(List l : vec2d){
            // 只將非空的迭代器加入數組
            if(l.size() > 0){
               this.its.add(l.iterator()); 
            }
        }
    }

    public int next() {
        Integer res = its.get(curr).next();
        // 如果該迭代器用完了,換到下一個
        if(!its.get(curr).hasNext()){
            curr++;
        }
        return res;
    }

    public boolean hasNext() {
        return curr < its.size() && its.get(curr).hasNext();
    }
}
雙迭代器法 復雜度

時間 O(N) 空間 O(1)

思路

維護兩個迭代器:一個是輸入的List>的迭代器,它負責遍歷List的迭代器。另一個則是List的迭代器,它負責記錄當前到哪一個List的迭代器了。每次next時,我們先調用一下hasNext,確保當前List的迭代器有下一個值。

代碼
public class Vector2D {

    Iterator> it;
    Iterator curr;
    
    public Vector2D(List> vec2d) {
        it = vec2d.iterator();
    }

    public int next() {
        hasNext();
        return curr.next();
    }

    public boolean hasNext() {
        // 當前列表的迭代器為空,或者當前迭代器中沒有下一個值時,需要更新為下一個迭代器
        while((curr == null || !curr.hasNext()) && it.hasNext()){
            curr = it.next().iterator();
        }
        return curr != null && curr.hasNext();
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64586.html

相關文章

  • [Leetcode] Flatten Binary Tree to Linked List 整平二叉

    摘要:棧法復雜度時間空間思路對于一個根節點,我們將它的右子樹壓進一個棧中,然后將它的左子樹放到右邊來。如果該節點沒有左子樹,說明該節點是某個左子樹的最后一個節點,我們這時候把棧中最近的右子樹出來接到它的右邊。 Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-plac...

    mikyou 評論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
  • Keras 對序列進行一維和二維卷積

    摘要:網絡結構來自固定隨機數種子以復現結果創建維向量,并擴展維度適應對輸入的要求,的大小為定義卷積層卷積核數量為卷積核大小為定義最大化池化層平鋪層,調整維度適應全鏈接層定義全鏈接層編譯模型打印層的輸出打印網絡結構最終輸出如下卷積結果網絡結 showImg(https://segmentfault.com/img/remote/1460000012731670); 網絡結構來自https://...

    waterc 評論0 收藏0
  • Python學習之路28-符合Python風格的對象

    摘要:本篇繼續學習之路,實現更多的特殊方法以讓自定義類的行為跟真正的對象一樣。之所以要讓向量不可變,是因為我們在計算向量的哈希值時需要用到和的哈希值,如果這兩個值可變,那向量的哈希值就能隨時變化,這將不是一個可散列的對象。 《流暢的Python》筆記。本篇是面向對象慣用方法的第二篇。前一篇講的是內置對象的結構和行為,本篇則是自定義對象。本篇繼續Python學習之路20,實現更多的特殊方法以讓...

    Eric 評論0 收藏0

發表評論

0條評論

MageekChiu

|高級講師

TA的文章

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