From 853a3f4ca3d44e5f60fb68e7c71556d51c153b1b Mon Sep 17 00:00:00 2001 From: Jay Lee Date: Mon, 1 Nov 2021 00:27:42 +0900 Subject: [PATCH] =?UTF-8?q?feat(leetcode/medium/251-flatten-2d-vector.py)?= =?UTF-8?q?=C2=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../251-flatten-2d-vector.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 coding-challange/leetcode/medium/251-flatten-2d-vector/251-flatten-2d-vector.py diff --git a/coding-challange/leetcode/medium/251-flatten-2d-vector/251-flatten-2d-vector.py b/coding-challange/leetcode/medium/251-flatten-2d-vector/251-flatten-2d-vector.py new file mode 100644 index 00000000..077c7082 --- /dev/null +++ b/coding-challange/leetcode/medium/251-flatten-2d-vector/251-flatten-2d-vector.py @@ -0,0 +1,38 @@ +""" +251-flatten-2d-vector +leetcode/medium/251. Flatten 2D Vector +Difficulty: medium +URL: https://leetcode.com/problems/flatten-2d-vector/ +""" + +from typing import List + + +class Vector2D: + def flattening(self, _list, _result): + for item in _list: + if not isinstance(item, list): + _result.append(item) + else: + self.flattening(item, _result) + + def __init__(self, vec: List[List[int]]): + self._list = [] + self.flattening(vec, self._list) + + def next(self) -> int: + return self._list.pop(0) + + def hasNext(self) -> bool: + return len(self._list) > 0 + + +def test(): + vector2D = Vector2D([[1, 2], [3], [4]]) + assert vector2D.next() == 1 + assert vector2D.next() == 2 + assert vector2D.next() == 3 + assert vector2D.hasNext() == True + assert vector2D.hasNext() == True + assert vector2D.next() == 4 + assert vector2D.hasNext() == False