[学习报告]《LeetCode零基础指南》(第八讲)二维数组

第七天打卡。

1、统计有序矩阵中的负数
在这里插入图片描述

int countNegatives(int** grid, int gridSize, int* gridColSize){
    
    
    int ans=0;
    int r=gridSize;
    int c=gridColSize[0];
    for(int i=0;i<r;++i){
    
    
        for(int j=0;j<c;++j){
    
    
            if(grid[i][j]<0)  ++ans;
        }
    }
    return ans;
}

2、矩阵对角线元素的和
在这里插入图片描述

int diagonalSum(int** mat, int matSize, int* matColSize){
    
    
    int r=matSize;
    int c=matColSize[0];
    int sum=0;
    for(int i=0;i<r;++i){
    
    
        sum+=mat[i][i];
    }
    for(int j=0;j<r;++j){
    
    
        if(r-j-1!=j) sum+=mat[j][r-j-1];
    }
    return sum;
}

3、最富有客户的资产总量
在这里插入图片描述

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize){
    
    
    int ans=0,max=0;
    int r=accountsSize;
    int c=accountsColSize[0];
    for(int i=0;i<r;++i){
    
    
        ans=0;
        for(int j=0;j<c;++j){
    
    
            ans+=accounts[i][j];
            if(ans>max){
    
    
                max=ans;
            }
        }
    }
    return max;
}

4、托普利茨矩阵
在这里插入图片描述

int check(int **matrix,int sr,int sc,int maxr,int maxc){
    
    
    int step=0;
    while(1){
    
    
        if(sr+step>=maxr) break;
        if(sc+step>=maxc) break;
        if(matrix[sr+step][sc+step]!=matrix[sr][sc]){
    
    
            return false;
        }
        ++step;
    }
    return true;
}

bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize){
    
    
    int r=matrixSize;
    int c=matrixColSize[0];
    for(int i=0;i<r;++i){
    
    
        if(!check(matrix,i,0,r,c)){
    
    
            return false;
        }
    }
    for(int j=0;j<c;++j){
    
    
        if(!check(matrix,0,j,r,c)){
    
    
            return false;
        }
    }
    return true;
}

5、矩阵中的幸运数
在这里插入图片描述

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* luckyNumbers (int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
    
    
    int r=matrixSize;
    int c=matrixColSize[0];
    int minr[matrixSize];
    int maxc[*matrixColSize];
    int i,j;
    int *ret=(int *)malloc(sizeof(int )*100);
    for(i=0;i<r;++i){
    
    
        minr[i]=INT_MAX;
        for(j=0;j<c;++j){
    
    
            if(minr[i]>=matrix[i][j]) minr[i]=matrix[i][j];
        }
    }
    for(j=0;j<c;++j){
    
    
        maxc[j]=INT_MIN;
        for(i=0;i<r;++i){
    
    
            if(maxc[j]<=matrix[i][j]) maxc[j]=matrix[i][j];
        }
    }
    *returnSize=0;
    for(i=0;i<r;++i){
    
    
        for(j=0;j<c;++j){
    
    
            if(matrix[i][j]==minr[i]&&matrix[i][j]==maxc[j]){
    
    
                ret[*returnSize]=matrix[i][j];
                ++(*returnSize);
            }
        }
    }

    return ret;
}

6、二进制矩阵中的特殊位置
在这里插入图片描述

int numSpecial(int** mat, int matSize, int* matColSize){
    
    
    int ans=0;
    for(int i=0;i<matSize;++i){
    
    
        int tmp=0;int flag=0;
        for(int j=0;j<*matColSize;++j){
    
    
            if(mat[i][j]==1){
    
    
                flag++;
                tmp=j;
            }
        }
        if(flag==1){
    
    
            flag=0;
            for(int k=0;k<matSize;++k){
    
    
                if(mat[k][tmp]==1){
    
    
                    flag++;
                }
            }
            if(flag==1) ans++;
        }
    }
    return ans;
}

7、岛屿的周长
在这里插入图片描述

int islandPerimeter(int** grid, int gridSize, int* gridColSize){
    
    
    int len=0,land=0;;
    int r=gridSize;
    int c=gridColSize[0];
    for(int i=0;i<r;++i){
    
    
        for(int j=0;j<c;++j){
    
    
            if(grid[i][j]==1){
    
    
                land++;
                if(j<c-1&&grid[i][j+1]==1) len+=2;
                if(i<r-1&&grid[i+1][j]==1) len+=2;
            }
        }
    }
    return 4*land-len;
}

猜你喜欢

转载自blog.csdn.net/weixin_48989391/article/details/121601769