mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +08:00
Merge branch 'master' of https://github.com/youngyangyang04/leetcode
This commit is contained in:
@ -85,7 +85,7 @@ public:
|
|||||||
path.clear();
|
path.clear();
|
||||||
sort(nums.begin(), nums.end()); // 排序
|
sort(nums.begin(), nums.end()); // 排序
|
||||||
vector<bool> used(nums.size(), false);
|
vector<bool> used(nums.size(), false);
|
||||||
backtracking(nums, vec, used);
|
backtracking(nums, used);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -175,31 +175,25 @@ class Solution:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
```Go
|
|
||||||
func maxSubArray(nums []int) int {
|
|
||||||
if len(nums)<1{
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
dp:=make([]int,len(nums))
|
|
||||||
result:=nums[0]
|
|
||||||
dp[0]=nums[0]
|
|
||||||
for i:=1;i<len(nums);i++{
|
|
||||||
dp[i]=max(dp[i-1]+nums[i],nums[i])
|
|
||||||
result=max(dp[i],result)
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
func max(a,b int)int{
|
```go
|
||||||
if a>b{
|
func maxSubArray(nums []int) int {
|
||||||
return a
|
maxSum := nums[0]
|
||||||
}else{
|
for i := 1; i < len(nums); i++ {
|
||||||
return b
|
if nums[i] + nums[i-1] > nums[i] {
|
||||||
|
nums[i] += nums[i-1]
|
||||||
|
}
|
||||||
|
if nums[i] > maxSum {
|
||||||
|
maxSum = nums[i]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return maxSum
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||||
|
@ -189,7 +189,18 @@ Python:
|
|||||||
|
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
```Go
|
||||||
|
func numTrees(n int)int{
|
||||||
|
dp:=make([]int,n+1)
|
||||||
|
dp[0]=1
|
||||||
|
for i:=1;i<=n;i++{
|
||||||
|
for j:=1;j<=i;j++{
|
||||||
|
dp[i]+=dp[j-1]*dp[i-j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dp[n]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -219,6 +219,31 @@ Python:
|
|||||||
|
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
```Go
|
||||||
|
func maxProfit(prices []int) int {
|
||||||
|
length:=len(prices)
|
||||||
|
if length==0{return 0}
|
||||||
|
dp:=make([][]int,length)
|
||||||
|
for i:=0;i<length;i++{
|
||||||
|
dp[i]=make([]int,2)
|
||||||
|
}
|
||||||
|
|
||||||
|
dp[0][0]=-prices[0]
|
||||||
|
dp[0][1]=0
|
||||||
|
for i:=1;i<length;i++{
|
||||||
|
dp[i][0]=max(dp[i-1][0],-prices[i])
|
||||||
|
dp[i][1]=max(dp[i-1][1],dp[i-1][0]+prices[i])
|
||||||
|
}
|
||||||
|
return dp[length-1][1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func max(a,b int)int {
|
||||||
|
if a>b{
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,7 +223,21 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
```python
|
||||||
|
class Solution:
|
||||||
|
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
|
||||||
|
start = 0
|
||||||
|
curSum = 0
|
||||||
|
totalSum = 0
|
||||||
|
for i in range(len(gas)):
|
||||||
|
curSum += gas[i] - cost[i]
|
||||||
|
totalSum += gas[i] - cost[i]
|
||||||
|
if curSum < 0:
|
||||||
|
curSum = 0
|
||||||
|
start = i + 1
|
||||||
|
if totalSum < 0: return -1
|
||||||
|
return start
|
||||||
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
|
||||||
@ -234,4 +248,4 @@ Go:
|
|||||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||||
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
|
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
|
||||||
<div align="center"><img src=../pics/公众号.png width=450 alt=> </img></div>
|
<div align="center"><img src=../pics/公众号.png width=450 alt=> </img></div>
|
||||||
|
@ -161,7 +161,18 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
```python
|
||||||
|
class Solution:
|
||||||
|
def candy(self, ratings: List[int]) -> int:
|
||||||
|
candyVec = [1] * len(ratings)
|
||||||
|
for i in range(1, len(ratings)):
|
||||||
|
if ratings[i] > ratings[i - 1]:
|
||||||
|
candyVec[i] = candyVec[i - 1] + 1
|
||||||
|
for j in range(len(ratings) - 2, -1, -1):
|
||||||
|
if ratings[j] > ratings[j + 1]:
|
||||||
|
candyVec[j] = max(candyVec[j], candyVec[j + 1] + 1)
|
||||||
|
return sum(candyVec)
|
||||||
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
|
||||||
@ -172,4 +183,4 @@ Go:
|
|||||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||||
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
|
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
|
||||||
<div align="center"><img src=../pics/公众号.png width=450 alt=> </img></div>
|
<div align="center"><img src=../pics/公众号.png width=450 alt=> </img></div>
|
||||||
|
@ -133,8 +133,33 @@ Python:
|
|||||||
|
|
||||||
|
|
||||||
Go:
|
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,我们依次用数组中的元素去更新 dp 数组,相当于插入最后递增的元素,而更新 dp 数组时需要进行 O(logn) 的二分搜索,所以总时间复杂度为 O(nlogn)。
|
||||||
|
- 空间复杂度:O(n),需要额外使用长度为 n 的 dp 数组。
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user