相关题目:
两地调度
在此题中,采取的是贪心算法的思想。由于有2N个人服务两地,故先假设所有的人都前去了B地,接着有N个人从B地去了A地,没人所花费的费用为pre[A]-pre[B].所以,选取最小的前N个pre[A]-pre[B].。进行计算(差值排序)
class Solution {
public int twoCitySchedCost(int[][] costs) {
int[] arr=new int[costs.length];
int res=0;
for(int i=0;i<costs.length;i++){
arr[i]=costs[i][0]-costs[i][1];
res+=costs[i][1];
}
//对差值进行排序
Arrays.sort(arr);
for(int i=0;i<costs.length/2;i++){
res+=arr[i];
}
return res;
}
}
给定行和列的和求给定矩阵
思路:每一次尽量的取最大的值[因为一定会有一个解出现] (Math.min(rowSum[i],colSum[j]))
class Solution {
public int[][] restoreMatrix(int[] rowSum, int[] colSum) {
/**
使用贪心算法,采用贪心策略,每一次尽可能的去最大的值来行成一个最优解
*/
int [][] arr=new int[rowSum.length][colSum.length];
for( int i=0;i<rowSum.length;i++){
for( int j=0;j<colSum.length;j++){
arr[i][j]=Math.min(rowSum[i],colSum[j]);
rowSum[i]-=arr[i][j];
colSum[j]-=arr[i][j];
}
}
return arr;
}
}
于2020/10/13开始编辑。持续更新