Add Go Solution

This commit is contained in:
程序员小贺
2021-05-16 12:55:39 +08:00
committed by GitHub
parent 4cbdfc079e
commit 54a98e7e63

View File

@ -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 数组。
----------------------- -----------------------