LeetCode 832. Flipping an Image

2018-08-10  本文已影响0人  intuitive
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指针仅仅只使用了第一行,后面的行没有使用
上一篇下一篇

猜你喜欢

热点阅读