题目
题解
不经意就用了贪心的思路hh,简单题自己ac,送一朵小红花~
注意记一下二维数组的排序代码,次次写次次忘o(╥﹏╥)o
class Solution {
public int maximumUnits(int[][] boxTypes, int truckSize) {
//这种方法也行,但是麻烦点
// Arrays.sort(boxTypes,new Comparator<int[]>(){
// public int compare(int[] nums1,int[] nums2){
// if(nums1[1]==nums2[1]) return nums2[0]-nums1[0];
// return nums2[1]-nums1[1];//按盒子装载单元数量降序排序
// }
// });
Arrays.sort(boxTypes,(a,b)->b[1]-a[1]);
int res=0;
for(int[] box:boxTypes){
if(box[0]<truckSize){
res+=box[0]*box[1];
truckSize-=box[0];
}
else{
res+=truckSize*box[1];
break;
}
}
return res;
}
}
时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),排序所需时间。
空间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),排序需要的递归调用栈的大小。