题目
给你一个下标从 0 开始的二维整数数组 nums 。一开始你的分数为 0 。你需要执行以下操作直到矩阵变为空:
矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。
在步骤 1 删除的所有数字中找到最大的一个数字,将它添加到你的 分数 中。
请你返回最后的 分数 。
思路
每一行按照从大到小的顺序排列好
遍历取每一列的最大值加和
Java代码
class Solution {
public int matrixSum(int[][] nums) {
int row=nums.length;
int column=nums[0].length;
int res=0;
for(int i=0;i<row;i++){//第i行,遍历每一个元素并排序
for(int j=0;j<column;j++){
for(int k=j;k<column;k++){
if(nums[i][j]<nums[i][k]){
int temp=nums[i][k];
nums[i][k]=nums[i][j];
nums[i][j]=temp;
}
}
}
}
for(int j=0;j<column;j++){
int maxColumn=0;
for(int i=0;i<row;i++){
if(nums[i][j]>maxColumn) maxColumn=nums[i][j];
}
res+=maxColumn;
}
return res;
}
}
查找的问题
java冒泡排序需要两层循环,第一层循环i表示排序的轮数,第二层循环j表示比较的次数。