mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
Add Go Solution
This commit is contained in:
@ -116,8 +116,33 @@ Python:
|
|||||||
|
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
```
|
||||||
|
func lengthOfLIS(nums []int ) int {
|
||||||
|
dp := []int{}
|
||||||
|
for _, num := range nums {
|
||||||
|
if len(dp) ==0 || dp[len(dp) - 1] < num {
|
||||||
|
dp = append(dp, num)
|
||||||
|
} else {
|
||||||
|
l, r := 0, len(dp) - 1
|
||||||
|
pos := r
|
||||||
|
for l <= r {
|
||||||
|
mid := (l + r) >> 1
|
||||||
|
if dp[mid] >= num {
|
||||||
|
pos = mid;
|
||||||
|
r = mid - 1
|
||||||
|
} else {
|
||||||
|
l = mid + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dp[pos] = num
|
||||||
|
}//二分查找
|
||||||
|
}
|
||||||
|
return len(dp)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
复杂度分析
|
||||||
|
- 时间复杂度:O(nlogn)。数组 nums 的长度为 n,我们依次用数组中的元素去更新 d 数组,而更新 d 数组时需要进行 O(logn) 的二分搜索,所以总时间复杂度为 O(nlogn)。
|
||||||
|
- 空间复杂度:O(n),需要额外使用长度为 n 的 d 数组。
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user