题目:

给定一个二进制矩阵 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. C++11:内联命名空间,无缝升级库代码
  2. 如何linux中文改为英文,CentOS系统如何将中文语言改成英文
  3. Boost:使用类array <>的简单示例
  4. 厉害了!Intel第九代酷睿参数曝光
  5. 调查内存泄漏第1部分–编写泄漏代码
  6. mybatis学习(43):一级缓存被刷新情况
  7. java加载properties文件的几种方式,java高级面试笔试题
  8. 23. Django进阶:Django发送邮件
  9. iOS常用三方库、插件、知名技术博客、常用开发工具使用介绍等等(Objective-C版本)
  10. 中国行政区边界shp下载(省,市,县)
  11. Linux>>CentOS 7镜像下载及安装
  12. Java复习题及答案
  13. 脚本病毒---实验十二:脚本病毒
  14. 挂马攻击的介绍和防御
  15. 个性和共性,对共性的封装。新的语言是如何诞生的
  16. Unity编辑器扩展——在Editor下动态添加监听事件
  17. php手机投屏功能,电脑手机投屏怎么操作设置?
  18. 【编译原理】 NFA转变为DFA的子集构造法
  19. 分享一下我作为技能型自由职业者的常用赚钱软件
  20. 未能找到类型或命名空间名称“DllImport“(是否缺少using指令或程序集引用?)

热门文章

  1. jconsole连接远程服务
  2. Java Base64加密解密编码解码
  3. WPS Office 2019 版本 excel透视图创建及删除
  4. Qt warning Pass a context object as connect 3th paramter
  5. 从0到1搭建一个Spring Boot项目【第一个接口】
  6. 服务器意外断电的数据恢复过程
  7. 微信小程序云开发简单入门教程
  8. 云平台设计思路——表单篇
  9. DOA估计 基于稀疏贝叶斯的离格DOA估计
  10. 《伤寒论》——辨太阳病脉证并治(上)30条