1、统计矩阵中负数
int countNegatives(vector<vector<int>>& grid) {
int cnt=0;
for(auto x:grid){
for(auto y:x){
if(y<0){
cnt++;
}
}
}
return cnt;
}
2、矩阵对角线元素和
int diagonalSum(vector<vector<int>>& mat) {
int ans=0;
int r=mat.size();
for(int i=0;i<r;i++){
ans+=mat[i][i];
}
for(int i=0;i<r;i++){
if(r-i-1!=i){
ans+=mat[i][r-i-1];
}
}
return ans;
}
3、最富有的客户
int maximumWealth(vector<vector<int>>& accounts) {
int maxval=0;
for(int i=0;i<accounts.size();i++){
int sum=0;
for(int j=0;j<accounts[0].size();j++){
sum+=accounts[i][j];
maxval=max(sum,maxval);
}
}
return maxval;
}
4、托普利茨矩阵
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
for(int i=1;i<matrix.size();i++){
for(int j=1;j<matrix[0].size();j++){
if(matrix[i][j]!=matrix[i-1][j-1]){
return false;
}
}
}
return true;
}
5、矩阵中的幸运数
vector<int> luckyNumbers (vector<vector<int>>& matrix) {
int r=matrix.size();
int c=matrix[0].size();
int rmin[100];
int cmax[100];
vector<int> ret;
for(int i=0;i<r;i++){
rmin[i]=100000;
for(int j=0;j<c;j++){
rmin[i]=min(rmin[i],matrix[i][j]);
}
}
for(int j=0;j<c;j++){
cmax[j]=0;
for(int i=0;i<r;i++){
cmax[j]=max(cmax[j],matrix[i][j]);
}
}
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(matrix[i][j]==rmin[i]&&matrix[i][j]==cmax[j]){
ret.push_back(matrix[i][j]);
}
}
}
return ret;
}
6、二进制矩阵中的特殊位置
int numSpecial(vector<vector<int>>& mat) {
int r=mat.size();
int c=mat[0].size();
vector<int> row(r);
vector<int> col(c);
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
int cur=mat[i][j]==1;
row[i]+=cur;
col[j]+=cur;
}
}
int res=0;
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(row[i]==1&&col[j]==1&&mat[i][j]==1){
res++;
}
}
}
return res;
}