LeetCode 832. Flipping an Image

Flipping an image
/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *columnSizes array.意思是返回一个指针指向一个数组,所以才会是指针的指针,不要片面理解为指向二维数组
 *注意返回指向一个数组的指针和指向一个二维数组的指针
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** flipAndInvertImage(int** A, int ARowSize, int *AColSizes, int** columnSizes, int* returnSize) {
    *returnSize = ARowSize;//row size
    int colsize = *AColSizes;//col size
    
    int** retarr = (int**)malloc(sizeof(void*) * ARowSize);//新建ARowSize个指针的指针,指针指向的空间大小为void
    *columnSizes = (int*)malloc(sizeof(int) * ARowSize);//新建ARowSize个指针,指针指向的空间大小为int大小
    
    for (int i = 0; i < ARowSize; i ++) {
        int* one = A[i];//指针指向该行第一个int
        int* newone = (int*)malloc(sizeof(int) * colsize);//新建一个空行,行元素为int大小
        
        for (int j = 0; j < colsize; j ++) {
            int t = one[j];
            if (t == 1) t = 0;
            else t = 1;//取j位置值并反转
            newone[colsize - j - 1] = t;//放置在空行对称位置
        } 
        
        retarr[i] = newone;//行指针指向该行
        (*columnSizes)[i] = colsize;//
    }
    return retarr;//返回指针的指针
}
//该int** columnSizes指针仅仅只使用了第一行,后面的行没有使用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容