摘要:另一個則是的迭代器,它負責記錄當前到哪一個的迭代器了。每次時,我們先調用一下,確保當前的迭代器有下一個值。代碼當前列表的迭代器為空,或者當前迭代器中沒有下一個值時,需要更新為下一個迭代器
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
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
摘要:棧法復雜度時間空間思路對于一個根節點,我們將它的右子樹壓進一個棧中,然后將它的左子樹放到右邊來。如果該節點沒有左子樹,說明該節點是某個左子樹的最后一個節點,我們這時候把棧中最近的右子樹出來接到它的右邊。 Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-plac...
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...
摘要:網絡結構來自固定隨機數種子以復現結果創建維向量,并擴展維度適應對輸入的要求,的大小為定義卷積層卷積核數量為卷積核大小為定義最大化池化層平鋪層,調整維度適應全鏈接層定義全鏈接層編譯模型打印層的輸出打印網絡結構最終輸出如下卷積結果網絡結 showImg(https://segmentfault.com/img/remote/1460000012731670); 網絡結構來自https://...
摘要:本篇繼續學習之路,實現更多的特殊方法以讓自定義類的行為跟真正的對象一樣。之所以要讓向量不可變,是因為我們在計算向量的哈希值時需要用到和的哈希值,如果這兩個值可變,那向量的哈希值就能隨時變化,這將不是一個可散列的對象。 《流暢的Python》筆記。本篇是面向對象慣用方法的第二篇。前一篇講的是內置對象的結構和行為,本篇則是自定義對象。本篇繼續Python學習之路20,實現更多的特殊方法以讓...
閱讀 2000·2023-04-25 16:53
閱讀 1442·2021-10-13 09:39
閱讀 606·2021-09-08 09:35
閱讀 1639·2019-08-30 13:03
閱讀 2121·2019-08-30 11:06
閱讀 1831·2019-08-30 10:59
閱讀 3188·2019-08-29 17:00
閱讀 2288·2019-08-23 17:55