题目 |
题目传送门:传送门(点击此处)
题解 |
思路
nums
用来记录了每个商店的巧克力的 价格
和 块数
,为了花最少的钱,很显而易见,从最便宜的开始买就行了
- 最直观的思路,把二维数组按照价格列进行排序,然后遍历数组算钱即可,比较简单,可能比较不容易的是
二维数组根据某个列的值进行排序
- 另外还要注意的一点就是
int
和long
的抓换,如果不转换为long
,会存在溢出
的情况
code
package solution56;
import java.util.Arrays;
import java.util.Comparator;
class Solution {
public long solution(long n, long k, int[][] nums) {
Arrays.sort(nums, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
long res = 0;
int index = 0;
while (k > 0 && index < n) {
int[] temp = nums[index];
if (temp[1] <= k) {
res = res + (long)temp[0] * (long)temp[1];
k = k - temp[1];
} else {
res = res + (long)temp[0] * k;
k = 0;
}
index++;
}
return res;
}
}