题目:

给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。

反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。

示例 1:

输入: [[1,1,0],[1,0,1],[0,0,0]]
输出: [[1,0,0],[0,1,0],[1,1,1]]
解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];
     然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
示例 2:

输入: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释: 首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];
     然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
说明:

1 <= A.length = A[0].length <= 20
0 <= A[i][j] <= 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flipping-an-image
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

结果:

解题思路:

我最没能够理解的就是returnColumnSizes。。。

没能和明白这个怎么存。看了题解才知道这是存储每一行的数据,所以必须有行数空间。。

按行循环一遍,当列数是一半一下的时候就后面一般的数据颠倒。

然后对当前数据进行^1的操作,使其0换个1对调。

代码:

/*** 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** flipAndInvertImage(int** A, int ASize, int* AColSize, int* returnSize, int** returnColumnSizes){*returnSize = ASize;int i, temp;*returnColumnSizes = (int **)malloc(sizeof(int) * ASize);for(i = 0; i < ASize; i++)(*returnColumnSizes)[i] = *AColSize;for(i = 0; i < ASize; i++){for(int j = 0; j < *AColSize; j++){if( j < *AColSize / 2){temp = A[i][j];A[i][j] = A[i][*AColSize - j - 1];A[i][*AColSize - j - 1] = temp;}A[i][j] ^= 1;}}return A;
}

C练题笔记之:Leetcode-832. 翻转图像相关推荐

  1. Leetcode 832. 翻转图像

    832. 翻转图像 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, ...

  2. LeetCode 832. 翻转图像(异或^)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0 ...

  3. C练题笔记之:Leetcode-1460. 通过翻转子数组使两个数组相等

    题目: 给你两个长度相同的整数数组 target 和 arr . 每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转.你可以执行此过程任意次. 如果你能让 arr 变得与 target 相同 ...

  4. C练题笔记之:Leetcode-12. 整数转罗马数字

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             1 ...

  5. C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改

    题目: 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的n ...

  6. C练题笔记之:Leetcode-303. 区域和检索 - 数组不可变

    题目: 给定一个整数数组  nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= rig ...

  7. C练题笔记之:Leetcode-662. 二叉树最大宽度

    题目: 给你一棵二叉树的根节点 root ,返回树的 最大宽度 . 树的 最大宽度 是所有层中最大的 宽度 . 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度.将这个二叉树 ...

  8. C练题笔记之:Leetcode-793. 阶乘函数后 K 个零

    题目: f(x) 是 x! 末尾是 0 的数量.回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 . 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 :而 ...

  9. C练题笔记之:Leetcode-654. 最大二叉树

    题目: 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀上 构建左子 ...

最新文章

  1. OSPF路由协议解释及特性介绍
  2. android 耳机检测,android – 检测耳机是否有麦克风
  3. upload-labs_pass12_文件名截断_URL要编码为%00_pass13_文件名截断_Hex修改为00
  4. 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
  5. 60-130-336-源码-source-kafka相关-Flink读取kafka
  6. python课堂_python课堂整理6---字典
  7. 向量的内积(点积)、叉积(向量积)
  8. Kafka的Topic删不掉
  9. 2008年中国网游产业发展六大趋势
  10. 对组件、模块、子系统、系统、框架、架构 定义浅析
  11. 知识图谱问答 | (3) 关系分类概述
  12. 台式计算机常用哪些主板结构,一种台式计算机用主板的制作方法
  13. 20165334 学习基础与c语言学习心得
  14. 可汗学院计算机课程都有哪些,要录制可汗学院教学视频你需要哪些硬件和软件?...
  15. 零基础python机器学习笔记--代码实战第二天数据分析
  16. bakaxl启动器怎么导入整合包_bakaxl启动器加mod整合包
  17. 机械师怎么打开计算机管理,详解机械师win10打开fn热键功能教程
  18. Cura15.04.6 安装闪退及汉化解决
  19. Python正则表达式(附正则表达式教程、调试工具、可视化工具)
  20. 为什么说蚂蚁金服和京东金融都没啥前途?

热门文章

  1. Houdini HDK 读取shapefile矢量数据 02.5
  2. Mongodb 索引 对查询结果的排序
  3. Android的优化
  4. 通过商业智能(BI)可视化数据分析了解布洛芬的产销情况
  5. 帝国CMS之列表页调用父栏目下所有子栏目名称(带链接)
  6. 入行 4 年,跳槽 2 次,我摸透了软件测试这一行!
  7. Spring WebFlux运用中的思考与对比
  8. 在程序员行业,找师傅跟找对象差不多,这些点你得注意!
  9. C# GZip 压缩 / 解压
  10. angularjs之ng-class指令详解