第一题 最富有客户的资产总量
简化题意为求二维数组,一行的和的最大值,遍历数组即可。
class Solution {
public:
int maximumWealth(vector<vector<int>>& accounts) {
int m=accounts.size();
int n=accounts[0].size();
int max;
for(int i=0;i<m;i++)
{
int sum=0;
for(int j=0;j<n;j++)
{
sum=sum+accounts[i][j];
}
if(max<sum)
{
max=sum;
}
}
return max;
}
};
第二题 二进制矩阵中的特殊位置
按题意模拟
class Solution {
public:
int numSpecial(vector<vector<int>>& mat) {
int ans = 0;
for(int i = 0; i < mat.size(); i ++)
{
for(int j = 0; j < mat[i].size(); j ++)
{
if(mat[i][j])
{
int flag = 1;//flag为1则是特殊位置
for(int x = 0; x < mat.size(); x ++)//遍历第i行
{
if(x != i && mat[x][j] == 1)
{
flag = 0;
break;
}
}
if(flag)
{
for(int x = 0; x < mat[i].size(); x ++)//如果第i行满足条件,继续遍历第j列
{
if(x != j && mat[i][x] == 1)
{
flag = 0;
break;
}
}
}
ans += flag;
}
}
}
return ans;
}
};
第三题 翻转图像
按题意模拟
class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& image) {
//考虑直接模拟
int n = image.size(),m = image[0].size();
for (int i = 0; i < n;i++){
//考虑水平翻转的时候直接反转图片
for (int j = 0;j < m / 2;j++){
int tmp = image[i][j];
//这里加1然后对2取余就可以完成01互换了
image[i][j] = (image[i][m - j -1] + 1) % 2;
image[i][m - j - 1] = (tmp + 1) % 2;
}
//特殊处理下奇数的中间数即可
if (m % 2 == 1){
image[i][m / 2] = (image[i][m / 2] + 1) % 2;
}
}
return image;
}
};