mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Update 0474.一和零.md
This commit is contained in:
@ -210,19 +210,35 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
DP(版本一)
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
|
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
|
||||||
dp = [[0] * (n + 1) for _ in range(m + 1)] # 默认初始化0
|
dp = [[0] * (n + 1) for _ in range(m + 1)] # 创建二维动态规划数组,初始化为0
|
||||||
|
for s in strs: # 遍历物品
|
||||||
|
zeroNum = s.count('0') # 统计0的个数
|
||||||
|
oneNum = len(s) - zeroNum # 统计1的个数
|
||||||
|
for i in range(m, zeroNum - 1, -1): # 遍历背包容量且从后向前遍历
|
||||||
|
for j in range(n, oneNum - 1, -1):
|
||||||
|
dp[i][j] = max(dp[i][j], dp[i - zeroNum][j - oneNum] + 1) # 状态转移方程
|
||||||
|
return dp[m][n]
|
||||||
|
|
||||||
|
```
|
||||||
|
DP(版本二)
|
||||||
|
```python
|
||||||
|
class Solution:
|
||||||
|
def findMaxForm(self, strs: List[str], m: int, n: int) -> int:
|
||||||
|
dp = [[0] * (n + 1) for _ in range(m + 1)] # 创建二维动态规划数组,初始化为0
|
||||||
# 遍历物品
|
# 遍历物品
|
||||||
for str in strs:
|
for s in strs:
|
||||||
ones = str.count('1')
|
ones = s.count('1') # 统计字符串中1的个数
|
||||||
zeros = str.count('0')
|
zeros = s.count('0') # 统计字符串中0的个数
|
||||||
# 遍历背包容量且从后向前遍历!
|
# 遍历背包容量且从后向前遍历
|
||||||
for i in range(m, zeros - 1, -1):
|
for i in range(m, zeros - 1, -1):
|
||||||
for j in range(n, ones - 1, -1):
|
for j in range(n, ones - 1, -1):
|
||||||
dp[i][j] = max(dp[i][j], dp[i - zeros][j - ones] + 1)
|
dp[i][j] = max(dp[i][j], dp[i - zeros][j - ones] + 1) # 状态转移方程
|
||||||
return dp[m][n]
|
return dp[m][n]
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Go
|
### Go
|
||||||
|
Reference in New Issue
Block a user