Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d3a07fa

Browse files
Update 0300.最长上升子序列.md
1 parent 2261538 commit d3a07fa

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

‎problems/0300.最长上升子序列.md‎

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class Solution {
141141
}
142142
}
143143
```
144-
144+
DP
145145
Python:
146146
```python
147147
class Solution:
@@ -157,7 +157,31 @@ class Solution:
157157
result = max(result, dp[i]) #取长的子序列
158158
return result
159159
```
160+
贪心
161+
```python
162+
class Solution:
163+
def lengthOfLIS(self, nums: List[int]) -> int:
164+
if len(nums) <= 1:
165+
return len(nums)
166+
167+
tails = [nums[0]] # 存储递增子序列的尾部元素
168+
for num in nums[1:]:
169+
if num > tails[-1]:
170+
tails.append(num) # 如果当前元素大于递增子序列的最后一个元素,直接加入到子序列末尾
171+
else:
172+
# 使用二分查找找到当前元素在递增子序列中的位置,并替换对应位置的元素
173+
left, right = 0, len(tails) - 1
174+
while left < right:
175+
mid = (left + right) // 2
176+
if tails[mid] < num:
177+
left = mid + 1
178+
else:
179+
right = mid
180+
tails[left] = num
181+
182+
return len(tails) # 返回递增子序列的长度
160183

184+
```
161185
Go:
162186
```go
163187
// 动态规划求解

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /