561:数组拆分 I
This commit is contained in:
parent
8491775ea4
commit
b46b247027
64
src/main/java/leetcode/editor/cn/ArrayPartitionI.java
Normal file
64
src/main/java/leetcode/editor/cn/ArrayPartitionI.java
Normal 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)
|
||||
|
||||
}
|
@ -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>
|
Loading…
Reference in New Issue
Block a user