Skip to content

Commit d6dfbdd

Browse files
committed
496. Next Greater Element I.
- Language: Python. - Time complexity: O(n * m). - Space complexity: O(1). - Method: Brute Force.
1 parent 4f3c0ba commit d6dfbdd

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

python_solutions/lc_496_next_greater_element_1/__init__.py

Whitespace-only changes.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def nextGreaterElement(self, nums1: list[int], nums2: list[int]) -> list[int]:
3+
# Time complexity: O(n * m). Space complexity: O(1).
4+
ans = [-1] * len(nums1)
5+
for idx, num in enumerate(nums1):
6+
cur, val = None, -1
7+
for nxt_num in nums2:
8+
if cur is None and num == nxt_num:
9+
cur = nxt_num
10+
elif cur is not None and nxt_num > cur:
11+
val = nxt_num
12+
break
13+
ans[idx] = val
14+
return ans
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import pytest
2+
3+
from lc_496_next_greater_element_1.lc_496_next_greater_element_1 import Solution
4+
5+
test_cases = (
6+
# preset cases
7+
([4, 1, 2], [1, 3, 4, 2], [-1, 3, -1]),
8+
([2, 4], [1, 2, 3, 4], [3, -1]),
9+
# common cases
10+
([9, 0, 24, 17], [11, 9, 4, 0, 20, 24, 17, 35], [20, 20, 35, 35]),
11+
([9, 0, 24, 35], [11, 35, 4, 0, 20, 24, 17, 9], [-1, 20, -1, -1]),
12+
([9, 0, 24, 35, 11], [11, 35, 4, 9, 0, 20, 17, 24], [20, 20, -1, -1, 35]),
13+
# corner cases
14+
([1], [1], [-1]),
15+
([2, 4], [2, 4], [4, -1]),
16+
)
17+
18+
19+
@pytest.mark.parametrize(("nums1", "nums2", "ans"), test_cases)
20+
def test_success_v0(
21+
nums1: list[int],
22+
nums2: list[int],
23+
ans: list[int],
24+
solution: Solution,
25+
):
26+
res = solution.nextGreaterElement(nums1, nums2)
27+
assert res == ans
28+
29+
30+
@pytest.fixture
31+
def solution() -> Solution:
32+
return Solution()

0 commit comments

Comments
 (0)