shiyongjava实现的思路Java 练习四:拿出指定张数卡片的数值最大和 桌子上总共有若干堆标有正整数的卡片。 每一次操作中,你可以从任意一堆的顶部取出最上面这张,并放在自己手中。 请返回在进行了指定次操作的前提下,手里的卡片上数值之和最大是多少,不进行排序
时间: 2024-05-10 09:20:01 浏览: 115
思路:
1. 首先将所有堆中的卡片数值存储在一个列表中,并对列表进行排序。
2. 然后从最大的数值开始依次取出指定次数的卡片放入手中,同时将这些卡片从列表中删除。
3. 最后对手中的卡片数值求和并返回。
代码实现:
```
public static int getMaxSum(int[] nums, int k) {
ArrayList<Integer> list = new ArrayList<>();
for (int num : nums) {
list.add(num);
}
Collections.sort(list, Collections.reverseOrder());
int sum = 0;
for (int i = 0; i < k; i++) {
sum += list.get(0);
list.remove(0);
}
return sum;
}
```
解释:
1. 将卡片数值存储在一个列表中:
```
ArrayList<Integer> list = new ArrayList<>();
for (int num : nums) {
list.add(num);
}
```
2. 对列表进行排序:
```
Collections.sort(list, Collections.reverseOrder());
```
这里使用Collections.reverseOrder()方法对列表进行降序排序。
3. 依次取出指定次数的卡片放入手中,并将这些卡片从列表中删除:
```
int sum = 0;
for (int i = 0; i < k; i++) {
sum += list.get(0);
list.remove(0);
}
```
4. 返回手中卡片数值的总和:
```
return sum;
```
阅读全文