《算法零基础100讲》(第3讲) 矩阵

Posted -98K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《算法零基础100讲》(第3讲) 矩阵相关的知识,希望对你有一定的参考价值。

今天打卡的章节是《算法零基础100讲》(第3讲) 矩阵;

附上链接:https://blog.csdn.net/WhereIsHeroFrom/article/details/120875129

目录

力扣习题

最后


力扣习题

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

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize)
    int num1=accountsSize;
    int num2=accountsColSize[0];
    int max=0;
    for(int i=0;i<num1;i++)
    
        int sum=0;
        for(int j=0;j<num2;j++)
        
            sum=sum+accounts[i][j];
        
        if(sum>max)
        
            max=sum;
        
    
    return max;

        1582. 二进制矩阵中的特殊位置

int numSpecial(int** mat, int matSize, int* matColSize)
    int num1=matSize;
    int num2=matColSize[0];
    int sum=0;
    for(int i=0;i<num1;i++)
    
        int single1=0,single2=0;
        int flag=0;
        for(int j=0;j<num2;j++)
        
            if(mat[i][j]==1)
            
                single1++;
                flag=j;
            
        
        if(single1==1)
        
            for(int k=0;k<num1;k++)
            
                if(mat[k][flag]==1)
                
                    single2++;
                
            
        
        if(single2==1)
        
            sum++;
        
    
    return sum;

        832. 翻转图像

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int **mymalloc(int num1,int num2,int *returnSize,int **returnColumnSizes)

    int **ans=(int **)malloc(sizeof(int *)*num1);
    *returnColumnSizes=(int *)malloc(sizeof(int)*num1);
    *returnSize=num1;
    for(int i=0;i<num1;i++)
    
        ans[i]=(int *)malloc(sizeof(int)*num2);
        (*returnColumnSizes)[i]=num2;
    
    return ans;

int** flipAndInvertImage(int** image, int imageSize, int* imageColSize, int* returnSize, int** returnColumnSizes)
    int num1=imageSize;
    int num2=imageColSize[0];
    int **ans=mymalloc(num1,num2,returnSize,returnColumnSizes);
    for(int i=0;i<num1;i++)
    
        for(int j=0;j<num2;j++)
        
            ans[i][j]=1-image[i][num2-1-j];
        
    
    return ans;

        48. 旋转图像

void rotate(int** matrix, int matrixSize, int* matrixColSize)
    int num=matrixSize;
    int **ans=(int **)malloc(sizeof(int *)*num);     
    for(int i=0;i<num;i++)
    
        ans[i]=(int *)malloc(sizeof(int *)*num);     
    
    for(int i=0;i<num;i++)
    
        for(int j=0;j<num;j++)
        
            ans[j][num-i-1]=matrix[i][j];         
        
    

    for(int i=0;i<num;i++)
    
        for(int j=0;j<num;j++)
        
            matrix[i][j]=ans[i][j];
        
    

​ 2022. 将一维数组转变成二维数组 ​

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** construct2DArray(int* original, int originalSize, int m, int n, int* returnSize, int** returnColumnSizes)
    if(originalSize!=m*n)
    
        *returnSize=0;
        return original;
    

    int **ans=(int **)malloc(sizeof(int *)*m);
    *returnColumnSizes=(int *)malloc(sizeof(int)*m);
    *returnSize=m;
    for(int i=0;i<m;i++)
    
        ans[i]=(int *)malloc(sizeof(int)*n);
        (*returnColumnSizes)[i]=n;
    

    int k=0;
    for(int i=0;i<m;i++)
    
        for(int j=0;j<n;j++)
        
            ans[i][j]=original[k++];
        
    
    return ans;

        1886. 判断矩阵经轮转后是否一致

    待写

        1260. 二维网格迁移

    待写

        54. 螺旋矩阵

    待写

最后

        临近考试了,最近一堆作业和考试,等过段时间有空再把最后三道题补上以及完善这些题的解题过程。

以上是关于《算法零基础100讲》(第3讲) 矩阵的主要内容,如果未能解决你的问题,请参考以下文章

《算法零基础100讲》(第13讲) 最大公约数

《算法零基础100讲》(第49讲) 位运算 (右移)

《算法零基础100讲》(第55讲) 哈希表入门

《算法零基础100讲》(第56讲) 哈希表进阶

《算法零基础100讲》(第38讲) 排序进阶 - 希尔排序

《算法零基础100讲》(第46讲) 位运算 (异或) 入门