Leecode刷题java之数组拆分
程序员文章站
2022-07-15 12:06:34
...
题目:
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
示例 1:
输入: [1,4,3,2]
输出: 4
解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).
提示:
n 是正整数,范围在 [1, 10000].
数组中的元素范围在 [-10000, 10000].
思路:
排序
代码:
class Solution {
public int arrayPairSum(int[] nums) {
//要想让和最大,就得让两个数相近
//比如一个最大的数和一个最小的数,min后取最小的数
//就会让大的数损失,两个数相差越大,损失越大,所以要排序
//偶数位上就是要的数的和
Arrays.sort(nums);
int sum=0;
for(int i=0;i<nums.length;i+=2)
{
sum+=nums[i];
}
return sum;
}
}
上一篇: 异或序列
下一篇: leetcode561(数组拆分I)
推荐阅读
-
Leetcode刷题java之1122. 数组的相对排序
-
《剑指Offer》Java刷题 NO.40 数组中只出现一次的数字(数组、HashMap、位运算、异或)
-
Leecode刷题java之数组拆分
-
21天刷题计划之10.2—牛牛偶像养成记(Java语言描述)
-
21天刷题计划之17.1—maximum-depth-of-binary-tree(二叉树的最大深度)(Java语言描述)
-
21天刷题计划之18.1—balanced-binary-tree(平衡二叉树)(Java语言描述)
-
21天刷题计划之10.1—统计大写字母个数(Java语言描述)
-
LeetCode刷题之238.除自身以外数组的乘积
-
LeetCode刷题之350.两个数组的交集 II
-
牛客网刷题java之给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。