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

資訊專欄INFORMATION COLUMN

Zigzag Iterator

Meathill / 1168人閱讀

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

Zigzag Iterator

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

這道題是說有兩個list,來回返回兩個list里面的值,要求用iterator來做。所以可以用兩個iterator來分別存這兩個list的值,再用一個int指針來表示現(xiàn)在應(yīng)該取哪個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循環(huán)結(jié)束,可以直接把它移除,然后next()就可以直接判斷l(xiāng)ist是否是空。

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;
    }
}

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

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

相關(guān)文章

  • [Leetcode] Zigzag Iterator Z形迭代器

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

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

    摘要:方法直接查找數(shù)組的位的迭代器,調(diào)用方法得到的整數(shù)即為要返回的元素。再寫迭代器的方法返回指針元素的并讓指針通過遞歸方法指向下一個元素。 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

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

    摘要:很奇葩的題目,先將轉(zhuǎn)化為字符數(shù)組,便于操作。再看要求轉(zhuǎn)化為多少行,就建立多大的數(shù)組。 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

發(fā)表評論

0條評論

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