给定长度为2n的自然数列表nums,把这些数分成n对,把每一对的最小值加起来(不同的分法,其和可能不同),输出最小值和的最大值。
时间: 2023-04-27 13:05:15 浏览: 434
题目描述:给定长度为2n的自然数列表nums,把这些数分成n对,把每一对的最小值加起来,输出最小值和的最大值。
解题思路:题目要求最小值和的最大值,那么我们需要让每一对的最小值尽可能大,因为最小值和的最大值就是所有最小值中的最小值之和。所以我们需要对nums进行排序,然后将相邻的两个数分为一组,这样得到的最小值和就是最大的。
Python代码如下:
```python
def arrayPairSum(nums):
nums.sort()
return sum(nums[::2])
nums = [1,4,3,2]
print(arrayPairSum(nums)) # 输出4
```
Java代码如下:
```java
public int arrayPairSum(int[] nums) {
Arrays.sort(nums);
int sum = ;
for (int i = ; i < nums.length; i += 2) {
sum += nums[i];
}
return sum;
}
int[] nums = {1,4,3,2};
System.out.println(arrayPairSum(nums)); // 输出4
```
C++代码如下:
```cpp
int arrayPairSum(vector<int>& nums) {
sort(nums.begin(), nums.end());
int sum = ;
for (int i = ; i < nums.size(); i += 2) {
sum += nums[i];
}
return sum;
}
vector<int> nums = {1,4,3,2};
cout << arrayPairSum(nums) << endl; // 输出4
```
阅读全文