做网站的一些好处,公司网站微信平台建设的好处,中英双语 网站 模板,wordpress document二维数组就是一个矩阵#xff0c;它有两个参数#xff0c;像这样a[i][j]#xff0c;其中i表示第几行#xff0c;j表示第几列#xff08;注意下标从0开始#xff09; 一维数组的传参用的一个*#xff0c;int a(int * nums); 二维数组的传参用的两个**#xff0c;int a(i…二维数组就是一个矩阵它有两个参数像这样a[i][j]其中i表示第几行j表示第几列注意下标从0开始 一维数组的传参用的一个*int a(int * nums); 二维数组的传参用的两个**int a(int ** nums);知道这个就可以了
第一题
https://leetcode.cn/problems/count-negative-numbers-in-a-sorted-matrix/description/
int countNegatives(int** grid, int gridSize, int* gridColSize) {int c gridColSize[0];int r gridSize;int ans 0;for(int i 0; i r; i) {for(int j 0; j c; j) {if(grid[i][j] 0) ans; }}return ans;
}第二题
https://leetcode.cn/problems/matrix-diagonal-sum/
int diagonalSum(int** mat, int matSize, int* matColSize){int sum 0;// 加主对角线元素for(int i 0; i matSize; i) {sum mat[i][i];}// 加副对角线元素int n 0;for(int i matSize - 1; i 0; i--) {sum mat[n][i];}// 如果为奇数,则需要去掉一个中间元素if(matSize % 2 ! 0) sum - mat[matSize / 2][matSize / 2];return sum;
}第二种我之前做过的方法应该也不难理解
int diagonalSum(int** mat, int matSize, int* matColSize){int sum 0;int sec matSize - 1;for(int i 0; i matSize; i) {sum mat[i][i];if(i ! sec) sum mat[i][sec];sec--;}return sum;
}第三题
https://leetcode.cn/problems/richest-customer-wealth/description/
int maximumWealth(int** accounts, int accountsSize, int* accountsColSize) {int r accountsSize;int c accountsColSize[0];int ans 0;for(int i 0; i r; i) {int sum 0;for(int j 0; j c; j) {sum accounts[i][j];}if(sum ans) ans sum;} return ans;
}第四题
https://leetcode.cn/problems/toeplitz-matrix/description/ 刚开始还想用对角线来解决发现难度有点大 这题只要仔细看每个元素存在条件可知每个元素左上角元素和它一定是相等的。
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize) {int r matrixSize;int c matrixColSize[0];for(int i 1; i r; i) {for(int j 1; j c; j) {if(matrix[i][j] ! matrix[i - 1][j - 1]) return false;}}return true;
}第五题
https://leetcode.cn/problems/lucky-numbers-in-a-matrix/ 模拟题实际上不难就是需要自己在脑中运算然后实现在代码上。 具体思路是1、先遍历数组的行找到最小的数 2、然后紧接着根据找到这个最小元素的列进行比较如果这个数字是列中最大的则保存到数组中。
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* luckyNumbers (int** matrix, int matrixSize, int* matrixColSize, int* returnSize){int * res (int *)malloc(sizeof(int) * matrixSize * matrixColSize[0]);int r matrixSize;int c matrixColSize[0];int retSize 0;for(int i 0; i r; i) {int min matrix[i][0];int tc 0;for(int j 1; j c; j) {if(matrix[i][j] min) {min matrix[i][j];tc j;}}int flag 1;for(int z 0; z r; z) {if(min matrix[z][tc]) {flag 0;}}if(flag) {res[0] min;retSize;}}*returnSize retSize;return res;
}第六题
https://leetcode.cn/problems/special-positions-in-a-binary-matrix/description/ 和上一题大同小异
int numSpecial(int** mat, int matSize, int* matColSize){int r matSize;int c matColSize[0];int ans 0;for(int i 0; i r; i) {for(int j 0; j c; j) {if(mat[i][j] 1) {int flag 1;for(int z 0; z r; z) {if(z i) continue;if(mat[z][j] 1) {flag 0;break;}}for(int x 0; x c; x) {if(x j) continue;if(mat[i][x] 1) {flag 0;break;}}if(flag) ans;break;}}}return ans;
}第七题
https://leetcode.cn/problems/island-perimeter/description/ 这题不知为什么内存总是溢出但在我把循环中的i换为i就好了。
const int dx[4] {1, 0, -1, 0};
const int dy[4] {0, 1, 0, -1};int islandPerimeter(int** grid, int gridSize, int* gridColSize) {int r gridSize;int c gridColSize[0];int ans 0;for(int i 0; i r; i) {for(int j 0; j c; j) {if(grid[i][j]) {int cnt 0;for(int a 0; a 4; a) {int tx i dx[a];int ty j dy[a];if(tx 0 || tx r || ty 0 || ty c || !grid[tx][ty]) {cnt;}}ans cnt;}}}return ans;
}