Skip to content

Commit ca90209

Browse files
committed
feat: Solve longest-increasing-subsequence problem
1 parent 16044ef commit ca90209

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from bisect import bisect_left
2+
3+
class Solution:
4+
"""
5+
뭔가 bfs 풀이 방식
6+
메모리 초과
7+
"""
8+
# def lengthOfLIS(self, nums: List[int]) -> int:
9+
# n = len(nums)
10+
# q = deque()
11+
# q.append((-1, float('-inf'), 0)) # (idx, lastValue, length)
12+
# answer = 0
13+
14+
# while q:
15+
# idx, last, length = q.popleft()
16+
# answer = max(answer, length)
17+
18+
# for nxt in range(idx + 1, n):
19+
# if nums[nxt] > last:
20+
# q.append((nxt, nums[nxt], length + 1))
21+
22+
# return answer
23+
24+
# def lengthOfLIS(self, nums: List[int]) -> int:
25+
# dp = [1] * len(nums)
26+
# for cur in range(1, len(nums)):
27+
# for pre in range(cur):
28+
# if nums[pre] < nums[cur]:
29+
# dp[cur] = max(1 + dp[pre], dp[cur])
30+
# return max(dp)
31+
32+
def lengthOfLIS(self, nums: List[int]) -> int:
33+
sub = []
34+
for num in nums:
35+
index = bisect_left(sub, num)
36+
if index == len(sub):
37+
sub.append(num)
38+
else:
39+
sub[index] = num
40+
return len(sub)

0 commit comments

Comments
 (0)