mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
update 0474.一和零: 优化文本,删除冗余的 go 代码
This commit is contained in:
@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
但本题其实是01背包问题!
|
但本题其实是01背包问题!
|
||||||
|
|
||||||
这不过这个背包有两个维度,一个是m 一个是n,而不同长度的字符串就是不同大小的待装物品。
|
只不过这个背包有两个维度,一个是m 一个是n,而不同长度的字符串就是不同大小的待装物品。
|
||||||
|
|
||||||
开始动规五部曲:
|
开始动规五部曲:
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ for (string str : strs) { // 遍历物品
|
|||||||
|
|
||||||
有同学可能想,那个遍历背包容量的两层for循环先后循序有没有什么讲究?
|
有同学可能想,那个遍历背包容量的两层for循环先后循序有没有什么讲究?
|
||||||
|
|
||||||
没讲究,都是物品重量的一个维度,先遍历那个都行!
|
没讲究,都是物品重量的一个维度,先遍历哪个都行!
|
||||||
|
|
||||||
5. 举例推导dp数组
|
5. 举例推导dp数组
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ public:
|
|||||||
|
|
||||||
## 总结
|
## 总结
|
||||||
|
|
||||||
不少同学刷过这道提,可能没有总结这究竟是什么背包。
|
不少同学刷过这道题,可能没有总结这究竟是什么背包。
|
||||||
|
|
||||||
此时我们讲解了0-1背包的多种应用,
|
此时我们讲解了0-1背包的多种应用,
|
||||||
|
|
||||||
@ -252,53 +252,6 @@ func max(a,b int) int {
|
|||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
> 传统背包,三维数组法
|
|
||||||
```golang
|
|
||||||
func findMaxForm(strs []string, m int, n int) int {
|
|
||||||
//dp的第一个index代表项目的多少,第二个代表的是背包的容量
|
|
||||||
//所以本处项目的多少是len(strs),容量为m和n
|
|
||||||
dp:=make([][][]int,len(strs)+1)
|
|
||||||
for i:=0;i<=len(strs);i++{
|
|
||||||
//初始化背包容量
|
|
||||||
strDp:=make([][]int,m+1)
|
|
||||||
for j:=0;j<m+1;j++{
|
|
||||||
tmp:=make([]int,n+1)
|
|
||||||
strDp[j]=tmp
|
|
||||||
}
|
|
||||||
dp[i]=strDp
|
|
||||||
}
|
|
||||||
for k,value:=range strs{
|
|
||||||
//统计每个字符串0和1的个数
|
|
||||||
var zero,one int
|
|
||||||
for _,v:=range value{
|
|
||||||
if v=='0'{
|
|
||||||
zero++
|
|
||||||
}else{
|
|
||||||
one++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
k+=1
|
|
||||||
//计算dp
|
|
||||||
for i:=0;i<=m;i++{
|
|
||||||
for j:=0;j<=n;j++{
|
|
||||||
//如果装不下
|
|
||||||
dp[k][i][j]=dp[k-1][i][j]
|
|
||||||
//如果装的下
|
|
||||||
if i>=zero&&j>=one{
|
|
||||||
dp[k][i][j]=getMax(dp[k-1][i][j],dp[k-1][i-zero][j-one]+1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return dp[len(strs)][m][n]
|
|
||||||
}
|
|
||||||
func getMax(a,b int)int{
|
|
||||||
if a>b{
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
```javascript
|
```javascript
|
||||||
|
Reference in New Issue
Block a user