给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。 num1 和 num2 可以包含前导 0 。 请你返回 num1 和 num2 可以得到的和的 最小 值。生成代码
时间: 2024-03-18 12:41:29 浏览: 16
根据上面的思路,可以得到以下的 Python 代码实现:
```python
class Solution:
def minSum(self, num: int) -> int:
s = str(num)
n = len(s)
cnt = [0] * 10
for c in s:
cnt[int(c)] += 1
inf = float('inf')
dp = [[inf] * (n+1) for _ in range(n+1)]
dp[0][0] = 0
for i in range(1, n+1):
for j in range(i+1):
for k in range(j+1):
if k > j-k:
break
if i-j+k < j-k:
continue
if k == 0 and j == 0:
continue
num1 = sum(cnt[:k]) if k > 0 else 0
num2 = sum(cnt[k:j-k]) if j-k > 0 else 0
if num1 == 0 and k > 0:
continue
if num2 == 0 and j-k > 0:
continue
if num1 > 0 and s[0] == '0':
continue
if num2 > 0 and s[k] == '0':
continue
val = dp[i-1][j-k] * 10 + int(s[k])
dp[i][j] = min(dp[i][j], val)
return dp[n][n//2]
```
其中,$cnt$ 数组用来统计数字出现的次数,$dp$ 数组用来记录状态。时间复杂度为 $O(n^3)$,空间复杂度也为 $O(n^3)$。可以通过一些优化来降低空间复杂度。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)