《C语言入门100例》(第33例) 矩阵转置

矩阵转置核心代码:

void swap(int *a,int *b)
{
	int t=*a;
	*a=*b;
	*b=t;
}

void mat(int num,int **matrix)
{
	for(int i=0;i<num;i++)
	{
	    {
	        for(int j=i;j<num;j++)
	        {
	            swap(&matrix[i][j],&matrix[j][i]);
	        }
	    }
	}
}

 练习题:

867. 转置矩阵《C语言入门100例》(第33例) 矩阵转置https://leetcode-cn.com/problems/transpose-matrix/解题思路:

主要难点在于二维指针,行和列多加注意就可以了!!!

代码:

/**
 * 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** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes){
    int num1=matrixColSize[0]; 
    int num2=matrixSize;
    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;
    }
    for(int i=0;i<num1;i++)
    {
        for(int j=0;j<num2;j++)
        {
            ans[i][j]=matrix[j][i];
        }
    }
    return ans;
}

上一篇:ROS-3DSLAM(二)lvi-sam项目认识


下一篇:从上到下打印二叉树,并且用数组从左到右存储