C练题笔记之:Leetcode-832. 翻转图像
题目:
给定一个二进制矩阵 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. 翻转图像相关推荐
- Leetcode 832. 翻转图像
832. 翻转图像 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, ...
- LeetCode 832. 翻转图像(异或^)
文章目录 1. 题目 2. 解题 1. 题目 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0 ...
- C练题笔记之:Leetcode-1460. 通过翻转子数组使两个数组相等
题目: 给你两个长度相同的整数数组 target 和 arr . 每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转.你可以执行此过程任意次. 如果你能让 arr 变得与 target 相同 ...
- C练题笔记之:Leetcode-12. 整数转罗马数字
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 1 ...
- C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改
题目: 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的n ...
- C练题笔记之:Leetcode-303. 区域和检索 - 数组不可变
题目: 给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= rig ...
- C练题笔记之:Leetcode-662. 二叉树最大宽度
题目: 给你一棵二叉树的根节点 root ,返回树的 最大宽度 . 树的 最大宽度 是所有层中最大的 宽度 . 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度.将这个二叉树 ...
- C练题笔记之:Leetcode-793. 阶乘函数后 K 个零
题目: f(x) 是 x! 末尾是 0 的数量.回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 . 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 :而 ...
- C练题笔记之:Leetcode-654. 最大二叉树
题目: 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀上 构建左子 ...
最新文章
- C++11:内联命名空间,无缝升级库代码
- 如何linux中文改为英文,CentOS系统如何将中文语言改成英文
- Boost:使用类array <>的简单示例
- 厉害了!Intel第九代酷睿参数曝光
- 调查内存泄漏第1部分–编写泄漏代码
- mybatis学习(43):一级缓存被刷新情况
- java加载properties文件的几种方式,java高级面试笔试题
- 23. Django进阶:Django发送邮件
- iOS常用三方库、插件、知名技术博客、常用开发工具使用介绍等等(Objective-C版本)
- 中国行政区边界shp下载(省,市,县)
- Linux>>CentOS 7镜像下载及安装
- Java复习题及答案
- 脚本病毒---实验十二:脚本病毒
- 挂马攻击的介绍和防御
- 个性和共性,对共性的封装。新的语言是如何诞生的
- Unity编辑器扩展——在Editor下动态添加监听事件
- php手机投屏功能,电脑手机投屏怎么操作设置?
- 【编译原理】 NFA转变为DFA的子集构造法
- 分享一下我作为技能型自由职业者的常用赚钱软件
- 未能找到类型或命名空间名称“DllImport“(是否缺少using指令或程序集引用?)