561:数组拆分 I

This commit is contained in:
huangge1199@hotmail.com 2021-09-06 20:21:41 +08:00
parent 8491775ea4
commit b46b247027
2 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,64 @@
//给定长度为 2n 的整数数组 nums 你的任务是将这些数分成 n , 例如 (a1, b1), (a2, b2), ..., (an, bn) 使得
// 1 n min(ai, bi) 总和最大
//
// 返回该 最大总和
//
//
//
// 示例 1
//
//
//输入nums = [1,4,3,2]
//输出4
//解释所有可能的分法忽略元素顺序
//1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
//2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
//3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
//所以最大总和为 4
//
// 示例 2
//
//
//输入nums = [6,2,6,5,1,2]
//输出9
//解释最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 +
//6 = 9
//
//
//
//
// 提示
//
//
// 1 <= n <= 10
// nums.length == 2 * n
// -10 <= nums[i] <= 10
//
// Related Topics 贪心 数组 计数排序 排序 👍 260 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//561:数组拆分 I
class ArrayPartitionI {
public static void main(String[] args) {
//测试代码
Solution solution = new ArrayPartitionI().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int arrayPairSum(int[] nums) {
Arrays.sort(nums);
int sum = 0;
for (int i = 0; i < nums.length; i = i + 2) {
sum += nums[i];
}
return sum;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,35 @@
<p>给定长度为 <code>2n</code><strong> </strong>的整数数组 <code>nums</code> ,你的任务是将这些数分成 <code>n</code><strong> </strong>对, 例如 <code>(a<sub>1</sub>, b<sub>1</sub>), (a<sub>2</sub>, b<sub>2</sub>), ..., (a<sub>n</sub>, b<sub>n</sub>)</code> ,使得从 <code>1</code> 到 <code>n</code><code>min(a<sub>i</sub>, b<sub>i</sub>)</code> 总和最大。</p>
<p>返回该 <strong>最大总和</strong></p>
<p> </p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>nums = [1,4,3,2]
<strong>输出:</strong>4
<strong>解释:</strong>所有可能的分法(忽略元素顺序)为:
1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
所以最大总和为 4</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>nums = [6,2,6,5,1,2]
<strong>输出:</strong>9
<strong>解释:</strong>最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + min(6, 6) = 1 + 2 + 6 = 9
</pre>
<p> </p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 <= n <= 10<sup>4</sup></code></li>
<li><code>nums.length == 2 * n</code></li>
<li><code>-10<sup>4</sup> <= nums[i] <= 10<sup>4</sup></code></li>
</ul>
<div><div>Related Topics</div><div><li>贪心</li><li>数组</li><li>计数排序</li><li>排序</li></div></div><br><div><li>👍 260</li><li>👎 0</li></div>