Skip to content

Commit

Permalink
DaleStudy#272 longest-increasing-subsequence solution
Browse files Browse the repository at this point in the history
  • Loading branch information
sungjinwi committed Jan 18, 2025
1 parent c934be0 commit 16b7109
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions longest-increasing-subsequence/sungjinwi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
"""
풀이 :
해당 인덱스의 숫자로 끝나는 LIS의 길이를 dp배열에 저장
nums[i] 와 그 이후에 오는 nums[j]를 비교해 nums[j]가 크고
i까지의 LIS 길이 + 1 > j까지의 LIS길이이면 j까지의 LIS길이 업데이트
업데이트 할 때마다 max길이와 비교해서 최대길이 업데이트
nums의 길이 N
TC : O(N^2)
for문의 개수를 살펴보면 N-1 + N-2 + ... + 1 = (N-1)N/2 이므로 N^2/2 -> O(N^2)
SC : O(N)
dp의 길이는 nums의 길이에 비례하므로
"""

class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
dp = [1] * len(nums)
max_LIS = 1
for i in range(len(nums) - 1) :
for j in range(i + 1, len(nums)) :
if nums[i] < nums[j] and dp[i] + 1 > dp[j] :
dp[j] = dp[i] + 1
max_LIS = max(max_LIS, dp[j])
return max_LIS

0 comments on commit 16b7109

Please sign in to comment.