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

0. 知识&概念

  1. 范式
    int countNegatives(int** grid, int gridSize, int* gridColSize){
    int r = gridSize; /行数/
    int c = gridColSize[0];/列数/

1.解题报告

Q1:1351. 统计有序矩阵中的负数

/*遍历*/
int countNegatives(int** grid, int gridSize, int* gridColSize){
   int r = gridSize;      /*行数*/
  int  c = gridColSize[0];/*列数*/

    int cnt=0;
    int i,j;
    for(i=0;i<r;++i)
    {
        for(j=0;j<c;++j)
        {
            if(*(*(grid+i)+j) < 0)
            {
                cnt++;
            }
        }
    }

    return cnt;

}

Q2:1572. 矩阵对角线元素的和

int diagonalSum(int** mat, int matSize, int* matColSize){
   int  r = matSize;
   //int  c = *(matColSize);
    int ans = 0;
    /*先求正对角线*/
    int i;
    for(i=0;i<r;++i)
    {
        ans += *(*(mat+i)+i);

    }
/*副对角线*/
    for(i=0;i<r;++i)
    {
        if(i != r-1-i)/*如果有重合点,去掉*/
        {
            ans +=*(*(mat+i)+(r-1-i));
        }
        
    }

    return ans;
}

Q3:1672. 最富有客户的资产总量

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize){

    /*打擂台,遍历*/
    int r = accountsSize;
    int c = *(accountsColSize);

    int max=0;
    int i,j,sum=0;
    for(i=0;i<r;++i)
    {
        sum =0;
        for(j=0;j<c;++j)
        {
            sum +=accounts[i][j];  
            if(sum > max)
            {
                max = sum;
            }
        }
    }

    return max;

}

Q4:766. 托普利茨矩阵

bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize){
    int r = matrixSize;
    int c = *matrixColSize;

    /*先从纵向判断,遍历行*/
    int i;//行的移动
    int j,k;//列的移动
    int sum;
    for(i = 0;i<r-1;i++)/*i<r-1,一个数就不判断了*/
    {
            sum = matrix[i][0];
            for(k=1;k+i<r && k<c;k++)/*k代表列,所以k<c*/
            {
                if(matrix[i+k][k] != sum)
                {
                    return false;
                }
            }
    }

    /*再横向判断*/
    for(j = 1;j<c-1;++j)
    {
        sum = matrix[0][j];
        for(k=1;k<r&&j+k<c;k++)/*注意,k代表行,所以k<r*/
        {
            if(matrix[k][j+k] != sum)
            {
                return false;
            }
        }

    }
    return true;
}

2.思考总结

(1)数组越界,指针变量写错,会造成内存报错。
(2)每一个判断表达式都得有意义,程序要求逻辑非常严密。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值