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

資訊專欄INFORMATION COLUMN

Zigzag Iterator

Meathill / 1162人閱讀

摘要:題目鏈接這道題是說有兩個,來回返回兩個里面的值,要求用來做。所以可以用兩個來分別存這兩個的值,再用一個指針來表示現在應該取哪個里面的值。這里用之后,如果一個循環結束,可以直接把它移除,然后就可以直接判斷是否是空。

Zigzag Iterator

題目鏈接:https://leetcode.com/problems...

這道題是說有兩個list,來回返回兩個list里面的值,要求用iterator來做。所以可以用兩個iterator來分別存這兩個list的值,再用一個int指針來表示現在應該取哪個list里面的值。

public class ZigzagIterator {
    Iterator l1, l2;
    int point;
    public ZigzagIterator(List v1, List v2) {
        l1 = v1.iterator();
        l2 = v2.iterator();
        point = 0;
    }

    public int next() {
        if(!hasNext()) return -1;
        if(point == 0) {
            point = 1;
            return l1.next();
        }
        else {
            point = 0;
            return l2.next();
        }
    }

    public boolean hasNext() {
        if(!l1.hasNext() && point == 0) point = 1;
        if(!l2.hasNext() && point == 1) point = 0;
        return l1.hasNext() || l2.hasNext();
    }
}

如果要擴展成k個list,那么可以用一個list來存所有的list里面的值。還是需要一個指針,思路和兩個的時候差不多。這里用list之后,如果一個iterator循環結束,可以直接把它移除,然后next()就可以直接判斷list是否是空。

public class ZigzagIterator {
    List> list;
    int point;
    public ZigzagIterator(List v1, List v2) {
        list = new LinkedList();
        if(v1 != null) list.add(v1.iterator());
        if(v2 != null) list.add(v2.iterator());
        point = 0;
    }

    public int next() {
        int result = list.get(point).next();
        point = (point + 1) % list.size();
        return result;
    }

    public boolean hasNext() {
        if(list.get(point).hasNext()) return true;
        int i = point;
        while(i < list.size()) {
            if(!list.get(i).hasNext()) list.remove(i);
            else return true;
        }
        while(list.size() > 0) {
            if(!list.get(0).hasNext()) list.remove(0);
            else {
                point = 0;
                return true;
            }
        }
        return false;
    }
}

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

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

相關文章

  • [Leetcode] Zigzag Iterator Z形迭代器

    摘要:用變量和取模來判斷我們該取列表中的第幾個迭代器。同樣,由于每用完一個迭代器后都要移出一個,變量也要相應的更新為該迭代器下標的上一個下標。如果迭代器列表為空,說明沒有下一個了。 Zigzag Iterator Given two 1d vectors, implement an iterator to return their elements alternately. For exa...

    SolomonXie 評論0 收藏0
  • 【LC總結】Iterator題目<Zigzag 1&2><BST>&

    摘要:方法直接查找數組的位的迭代器,調用方法得到的整數即為要返回的元素。再寫迭代器的方法返回指針元素的并讓指針通過遞歸方法指向下一個元素。 Zigzag Iterator Problem Given two 1d vectors, implement an iterator to return their elements alternately. Example Given two 1d ...

    WelliJhon 評論0 收藏0
  • leetcode 341 Flatten Nested List Iterator 以及其他Iter

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

    chaosx110 評論0 收藏0
  • [LintCode/LeetCode] Binary Tree Zigzag Level Orde

    Problem Given a binary tree, return the zigzag level order traversal of its nodes values. (ie, from left to right, then right to left for the next level and alternate between). Example Given binary tr...

    AlphaGooo 評論0 收藏0
  • [LeetCode] ZigZag Conversion

    摘要:很奇葩的題目,先將轉化為字符數組,便于操作。再看要求轉化為多少行,就建立多大的數組。 Problem The string PAYPALISHIRING is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed ...

    TIGERB 評論0 收藏0

發表評論

0條評論

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