leetcode 251

180 阅读1分钟

注意:

  1. 请记得 重置 在 Vector2D 中声明的类变量(静态变量),因为类变量会 在多个测试用例中保持不变,影响判题准确。请 查阅 这里。
  2. 你可以假定 next() 的调用总是合法的,即当 next() 被调用时,二维向量总是存在至少一个后续元素。
Vector2D iterator = new Vector2D([[1,2],[3],[4]]);

iterator.next(); // 返回 1
iterator.next(); // 返回 2
iterator.next(); // 返回 3
iterator.hasNext(); // 返回 true
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 4
iterator.hasNext(); // 返回 false

`

class Vector2D(object):

    def __init__(self, vec2d):
        """
        Initialize your data structure here.
        :type vec2d: List[List[int]]
        """
        self.vecCounter = 0
        self.listCounter = 0
        self.vector = [v for v in vec2d if len(v) > 0]

    def next(self):
        """
        :rtype: int
        """
        res = self.vector[self.vecCounter][self.listCounter]
        if self.listCounter == len(self.vector[self.vecCounter]) - 1:
            self.listCounter = 0
            self.vecCounter += 1
        else:
            self.listCounter += 1
        return res

    def hasNext(self):
        """
        :rtype: bool
        """
        return len(self.vector) > self.vecCounter


# Your Vector2D object will be instantiated and called as such:

vector =[
  [1,2],
  [3],
  [4,5,6]
]
i, v = Vector2D(vector), []
while i.hasNext(): v.append(i.next())
print(v)

`