Skip to content

Commit 67c65cc

Browse files
committed
添加了问题“2578. 最小和分割”的代码和题解
1 parent f1b4978 commit 67c65cc

File tree

4 files changed

+145
-0
lines changed

4 files changed

+145
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* @Author: LetMeFly
3+
* @Date: 2023-10-09 09:06:16
4+
* @LastEditors: LetMeFly
5+
* @LastEditTime: 2023-10-09 09:09:44
6+
*/
7+
#ifdef _WIN32
8+
#include "_[1,2]toVector.h"
9+
#endif
10+
11+
class Solution {
12+
public:
13+
int splitNum(int num) {
14+
string s = to_string(num);
15+
sort(s.begin(), s.end());
16+
string n1, n2;
17+
for (int i = 0; i < s.size(); i++) {
18+
(i % 2 ? n2 : n1) += s[i];
19+
}
20+
// cout << "n1: " << n1 << ", n2: " << n2 << endl; //**********
21+
return atoi(n1.c_str()) + atoi(n2.c_str());
22+
}
23+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
'''
2+
Author: LetMeFly
3+
Date: 2023-10-09 09:10:33
4+
LastEditors: LetMeFly
5+
LastEditTime: 2023-10-09 09:12:51
6+
'''
7+
class Solution:
8+
def splitNum(self, num: int) -> int:
9+
s = sorted(str(num))
10+
n = ['', '']
11+
for i in range(len(s)):
12+
n[i % 2] += s[i]
13+
return int(n[0]) + int(n[1])

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@ int main() {
507507
|2511.最多可以摧毁的敌人城堡数目|简单|<a href="https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/09/02/LeetCode%202511.%E6%9C%80%E5%A4%9A%E5%8F%AF%E4%BB%A5%E6%91%A7%E6%AF%81%E7%9A%84%E6%95%8C%E4%BA%BA%E5%9F%8E%E5%A0%A1%E6%95%B0%E7%9B%AE/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/132634912" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/solutions/2422392/letmefly-2511zui-duo-ke-yi-cui-hui-de-di-r7kt/" target="_blank">LeetCode题解</a>|
508508
|2544.交替数字和|简单|<a href="https://leetcode.cn/problems/alternating-digit-sum/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/07/12/LeetCode%202544.%E4%BA%A4%E6%9B%BF%E6%95%B0%E5%AD%97%E5%92%8C/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/131673485" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/alternating-digit-sum/solutions/2340450/letmefly-2544jiao-ti-shu-zi-he-by-tisfy-aa0f/" target="_blank">LeetCode题解</a>|
509509
|2559.统计范围内的元音字符串数|中等|<a href="https://leetcode.cn/problems/count-vowel-strings-in-ranges/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/06/02/LeetCode%202559.%E7%BB%9F%E8%AE%A1%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/131014779" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/count-vowel-strings-in-ranges/solutions/2294361/letmefly-2559tong-ji-fan-wei-nei-de-yuan-mq4f/" target="_blank">LeetCode题解</a>|
510+
|2578.最小和分割|简单|<a href="https://leetcode.cn/problems/split-with-minimum-sum/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/10/09/LeetCode%202578.%E6%9C%80%E5%B0%8F%E5%92%8C%E5%88%86%E5%89%B2/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/133694187" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/split-with-minimum-sum/solutions/2473429/letmefly-2578zui-xiao-he-fen-ge-tan-xin-pxbyl/" target="_blank">LeetCode题解</a>|
510511
|2582.递枕头|简单|<a href="https://leetcode.cn/problems/pass-the-pillow/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/09/26/LeetCode%202582.%E9%80%92%E6%9E%95%E5%A4%B4/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/133294825" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/pass-the-pillow/solutions/2459194/letmefly-2582di-zhen-tou-qing-xi-de-hua-ienu5/" target="_blank">LeetCode题解</a>|
511512
|2591.将钱分给最多的儿童|简单|<a href="https://leetcode.cn/problems/distribute-money-to-maximum-children/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/09/22/LeetCode%202591.%E5%B0%86%E9%92%B1%E5%88%86%E7%BB%99%E6%9C%80%E5%A4%9A%E7%9A%84%E5%84%BF%E7%AB%A5/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/133167460" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/distribute-money-to-maximum-children/solutions/2454112/letmefly-2591jiang-qian-fen-gei-zui-duo-2k1tq/" target="_blank">LeetCode题解</a>|
512513
|2596.检查骑士巡视方案|中等|<a href="https://leetcode.cn/problems/check-knight-tour-configuration/solutions/" target="_blank">题目地址</a>|<a href="https://blog.tisfy.eu.org/2023/09/13/LeetCode%202596.%E6%A3%80%E6%9F%A5%E9%AA%91%E5%A3%AB%E5%B7%A1%E8%A7%86%E6%96%B9%E6%A1%88/" target="_blank">题解地址</a>|<a href="https://letmefly.blog.csdn.net/article/details/132847346" target="_blank">CSDN题解</a>|<a href="https://leetcode.cn/problems/check-knight-tour-configuration/solutions/2440047/letmefly-2596jian-cha-qi-shi-xun-shi-fan-2q5j/" target="_blank">LeetCode题解</a>|
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
title: 2578.最小和分割
3+
date: 2023-10-09 09:13:42
4+
tags: [题解, LeetCode, 简单, 贪心, 数学, 排序]
5+
---
6+
7+
# 【LetMeFly】2578.最小和分割:贪心(数学)
8+
9+
力扣题目链接:[https://leetcode.cn/problems/split-with-minimum-sum/](https://leetcode.cn/problems/split-with-minimum-sum/)
10+
11+
<p>给你一个正整数&nbsp;<code>num</code>&nbsp;,请你将它分割成两个非负整数&nbsp;<code>num1</code> 和&nbsp;<code>num2</code>&nbsp;,满足:</p>
12+
13+
<ul>
14+
<li><code>num1</code> 和&nbsp;<code>num2</code>&nbsp;直接连起来,得到&nbsp;<code>num</code>&nbsp;各数位的一个排列。
15+
16+
<ul>
17+
<li>换句话说,<code>num1</code> 和&nbsp;<code>num2</code>&nbsp;中所有数字出现的次数之和等于&nbsp;<code>num</code>&nbsp;中所有数字出现的次数。</li>
18+
</ul>
19+
</li>
20+
<li><code>num1</code> 和&nbsp;<code>num2</code>&nbsp;可以包含前导 0 。</li>
21+
</ul>
22+
23+
<p>请你返回&nbsp;<code>num1</code> 和 <code>num2</code>&nbsp;可以得到的和的 <strong>最小</strong> 值。</p>
24+
25+
<p><strong>注意:</strong></p>
26+
27+
<ul>
28+
<li><code>num</code>&nbsp;保证没有前导 0 。</li>
29+
<li><code>num1</code> 和&nbsp;<code>num2</code>&nbsp;中数位顺序可以与&nbsp;<code>num</code>&nbsp;中数位顺序不同。</li>
30+
</ul>
31+
32+
<p>&nbsp;</p>
33+
34+
<p><strong>示例 1:</strong></p>
35+
36+
<pre>
37+
<b>输入:</b>num = 4325
38+
<b>输出:</b>59
39+
<b>解释:</b>我们可以将 4325 分割成 <code>num1 </code>= 24 和 num2<code> = </code>35 ,和为 59 ,59 是最小和。
40+
</pre>
41+
42+
<p><strong>示例 2:</strong></p>
43+
44+
<pre>
45+
<b>输入:</b>num = 687
46+
<b>输出:</b>75
47+
<b>解释:</b>我们可以将 687 分割成 <code>num1</code> = 68 和 <code>num2 </code>= 7 ,和为最优值 75 。
48+
</pre>
49+
50+
<p>&nbsp;</p>
51+
52+
<p><strong>提示:</strong></p>
53+
54+
<ul>
55+
<li><code>10 &lt;= num &lt;= 10<sup>9</sup></code></li>
56+
</ul>
57+
58+
59+
60+
## 方法一:贪心(数学)
61+
62+
先说结论:将给定数字转为字符串后将其中字符从小到大排序,然后依次分配给两个新数字即可。
63+
64+
不严谨的原理描述:
65+
66+
+ 越高位数字尽量越小,因此要从小到大排序
67+
+ 最终返回的是两数之和,所以首先位数越小越好,因此尽可能两个数字长度相等
68+
+ 若两个数长度不相等,更长的那个数字的最高位要尽可能小(例如将```23456```分成```246``````35```,唯一的百位是最小的```2```
69+
70+
结论中描述的分法恰好满足。
71+
72+
+ 时间复杂度$O(k\log k)$,其中$k = \log num$
73+
+ 空间复杂度$O(\log k)$
74+
75+
### AC代码
76+
77+
#### C++
78+
79+
```cpp
80+
class Solution {
81+
public:
82+
int splitNum(int num) {
83+
string s = to_string(num);
84+
sort(s.begin(), s.end());
85+
string n1, n2;
86+
for (int i = 0; i < s.size(); i++) {
87+
(i % 2 ? n2 : n1) += s[i];
88+
}
89+
// cout << "n1: " << n1 << ", n2: " << n2 << endl; //**********
90+
return atoi(n1.c_str()) + atoi(n2.c_str());
91+
}
92+
};
93+
```
94+
95+
#### Python
96+
97+
```python
98+
class Solution:
99+
def splitNum(self, num: int) -> int:
100+
s = sorted(str(num))
101+
n = ['', '']
102+
for i in range(len(s)):
103+
n[i % 2] += s[i]
104+
return int(n[0]) + int(n[1])
105+
```
106+
107+
> 同步发文于CSDN,原创不易,转载经作者同意后请附上[原文链接](https://blog.tisfy.eu.org/2023/10/09/LeetCode%202578.%E6%9C%80%E5%B0%8F%E5%92%8C%E5%88%86%E5%89%B2/)哦~
108+
> Tisfy:[https://letmefly.blog.csdn.net/article/details/133694187](https://letmefly.blog.csdn.net/article/details/133694187)

0 commit comments

Comments
 (0)