|
本帖最后由 WM_CH 于 2021-3-3 16:17 编辑
直接上代码吧
我自己在力扣上写的时候,总是报错,但是看别人写的就能通过。
这个问题一直困扰着我,实在不明白,望大家指教。
- typedef struct {
- int** mat;
- int matSize;
- int matColSize;
- } NumMatrix;
- NumMatrix* numMatrixCreate(int** matrix, int matrixSize, int* matrixColSize) {
- int i,j;
- NumMatrix* obj;
- if((NULL == matrix) || (NULL == matrix[0]) || (NULL == matrixColSize))
- {
- return NULL;
- }
- printf("%p\n", matrix);
- obj = (NumMatrix*)malloc(sizeof(NumMatrix));
- obj->matSize = matrixSize;
- obj->matColSize = matrixColSize[0];
- obj->mat = (int**)malloc(sizeof(int*) * (matrixSize+1));
- for(i=0; i<matrixSize; i++)
- {
- obj->mat[i] = (int*)malloc(sizeof(int) * (matrixColSize[0]+1));
- memcpy(obj->mat[i], matrix[i], matrixColSize[0]);///////////////////////////////<<< 出错行
- }
- return obj;
- }
复制代码
也就是说使用 matrix 去访问二维指针,会报错。
还有,我访问 matrix[j] 的时候,也会报错。如下:
- bool findNumberIn2DArray(int** matrix, int matrixSize, int* matrixColSize, int target){
- int i,j;
-
- if (matrix == NULL || matrixSize == 0 || matrixColSize[0] == 0) {
- return false;
- }
-
- for(i=1; i<=matrixColSize[0]; i++)
- {
- if( matrix[0][matrixColSize[0]-i] < target) ////////////////////////////////<<<这行matrix[i][j]出错
- {
- //得到目标列
- break;
- }
- if( matrix[0][matrixColSize[0]-i] == target)
- {
- return true;
- }
-
- }
- if(matrixColSize[0] == i)
- {
- return false;
- }
- for(j=1; j<=matrixSize-1; j++)
- {
- if(matrix[j][matrixColSize[0]-i] == target)
- {
- return true;
- }
- }
- return false;
- }
复制代码
但是我看别人,包括官方的回答,都是直接 matrix[j] 访问的呀,他们不报错,合着就我自己报错啊。。。。
下边是官方写的代码:
- NumMatrix* numMatrixCreate(int** matrix, int matrixSize, int* matrixColSize) {
- NumMatrix* ret = malloc(sizeof(NumMatrix));
- ret->sums = malloc(sizeof(int*) * matrixSize);
- ret->sumsSize = matrixSize;
- for (int i = 0; i < matrixSize; i++) {
- ret->sums[i] = malloc(sizeof(int) * (matrixColSize[i] + 1));
- ret->sums[i][0] = 0;
- for (int j = 0; j < matrixColSize[i]; j++) {
- ret->sums[i][j + 1] = ret->sums[i][j] + matrix[i][j];///////////////////////////////这行matrix[i][j]不出错!??
- }
- }
- return ret;
- }
- /*
- 作者:LeetCode-Solution
- 链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/er-wei-qu-yu-he-jian-suo-ju-zhen-bu-ke-b-2z5n/
- 来源:力扣(LeetCode)
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- */
复制代码
希望大家帮我解答一下,,谢谢。
. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|