当前位置: 首页 > news >正文

832. 翻转图像 - 力扣

1. 题目

给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。

  • 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]

反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。

  • 例如,反转 [0,1,1] 的结果是 [1,0,0]

2. 示例

3. 分析

遍历数组交换左右两个指针元素(水平翻转),同时判断交换后二者元素为1还是为0,进行替换(反转)。

class Solution {
public:vector<vector<int>> flipAndInvertImage(vector<vector<int>>& image) {int n = image.size();for(int i = 0; i < n; i++){int left = 0, right = n-1;while(left < right){swap(image[i][left], image[i][right]);if(image[i][left] == 0) image[i][left] = 1;else image[i][left] = 0;if(image[i][right] == 0) image[i][right] = 1;else image[i][right] = 0;left++;right--;}if(left == right){if(image[i][left] == 1) image[i][left] = 0;else image[i][left] = 1;}}return image;}
};

摘抄自:官方题解

上述每个元素是否都需交换和替换,是不是都必要捏?答案是:不是的。

  • 情况一:image[i][left] = 0,image[i][right] = 0。对第 i 行进行水平翻转之后,image[i][left] = 0,image[i][right] = 0。进行反转之后,image[i][left] = 1,image[i][right ]= 1。
  • 情况一:image[i][left] = 1,image[i][right] = 1。对第 i 行进行水平翻转之后,image[i][left] = 1,image[i][right] = 1。进行反转之后,image[i][left] = 0,image[i][right] = 0。
  • 情况一:image[i][left] = 0,image[i][right] = 1。对第 i 行进行水平翻转之后,image[i][left] = 1,image[i][right] = 0。进行反转之后,image[i][left] = 0,image[i][right] = 1。
  • 情况一:image[i][left] = 1,image[i][right] = 0。对第 i 行进行水平翻转之后,image[i][left] = 0,image[i][right] = 1。进行反转之后,image[i][left] = 1,image[i][right] = 0。

情况一和情况二是 image[i][left] = image[i][right] 的情况。在进行水平翻转和反转之后,image[i][left] 和 image[i][right] 的元素值都发生了改变,即元素值被反转。

情况三和情况四是 image[i][left] ≠ image[i][right] 的情况。在进行水平翻转和反转之后,image[i][left] 和 image[i][right] 的元素值都发生了两次改变,恢复原状。

所以当 left<right 时,判断 image[i][left] 和 image[i][right] 是否相等,如果相等则对 image[i][left] 和 image[i][right] 的值进行反转,如果不相等则不进行任何操作。

并且采用 ^ 运算符进行水平翻转和反转操作:

  • 1 ^ 1 = 0
  • 0 ^ 1 = 1
class Solution {
public:vector<vector<int>> flipAndInvertImage(vector<vector<int>>& image) {int n = image.size();for(int i = 0; i < n; i++){int left = 0, right = n-1;while(left < right){if(image[i][left] == image[i][right]){image[i][left] ^= 1;image[i][right] ^= 1;}left++;right--;}if(left == right) image[i][left] ^= 1;}return image;}
};

时间复杂度: O(n2)

空间复杂度: O(1)

相关文章:

832. 翻转图像 - 力扣

1. 题目 给定一个 n x n 的二进制矩阵 image &#xff0c;先 水平 翻转图像&#xff0c;然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转&#xff0c;即逆序。 例如&#xff0c;水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转图片的意思是图片中的 0 全部被…...

mumu 模拟器安装

1.下载安装 下载地址 Win 历史版本&#xff1a;http://mumu.163.com/update/win/Mac 历史 版本&#xff1a;http://mumu.163.com/20200515/25905_880858.html 2.设置为竖屏 在设置中心--界面设置页面设置宽720&#xff0c;高1280&#xff0c;DPI为240&#xff0c;如下图所示。…...

opencv实现图片的膨胀腐蚀

opencv实现图片的膨胀腐蚀 在OpenCV中&#xff0c;膨胀和腐蚀是两种基本的图像处理操作&#xff0c;通常用于二值图像中以提取特定的特征。它们是基于图像的形态学操作&#xff0c;使用一个称为结构元素或核的模板来改变图像的形状。 下面是如何使用OpenCV实现图片的膨胀和腐…...

[AIGC] Java常用的JSON库及简单示例

Java常用的JSON库及简单示例 在Java的世界里&#xff0c;JSON库广泛用于日常开发工作&#xff0c;本文将介绍几个常用的JSON库并配以简单的示例代码。 1. Gson Gson是Google提供的一个用来在Java对象和JSON数据之间进行转换的Java库。 它有一定的学习曲线&#xff0c;但一旦熟…...

Linux shell编程学习笔记50:who命令

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。比如&#xff0c;我们可以使用who命令来收集当前已登陆系统的用户信息&#xff0c;当前运行级别等信息。 1. who命令 的功能、格式和选项…...

vue使用webscoket

1. 创建 WebSocket 连接 首先&#xff0c;你需要在你的 Vue 组件中创建一个 WebSocket 连接。通常&#xff0c;这会在组件的 created 或 mounted 生命周期钩子中完成。 created() {this.socket new WebSocket(wss://your-websocket-url);this.socket.onopen () > {conso…...

第18章-综合以上功能 基于stm32的智能小车(远程控制、避障、循迹) 基于stm32f103c8t6/HAL库/CubeMX/超详细,包含代码讲解和原理图

这个是全网最详细的STM32项目教学视频。 第一篇在这里: 视频在这里 STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随 第18章-综合以上功能 18-按键和app按钮切换功能 根据上面介绍&#xff0c;我们的模式可…...

java并发工具类都有哪些

Java中的并发工具类包括&#xff1a; CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成某些操作。它通常用于线程间的同步&#xff0c;例如在一个线程完成其工作后通知其他线程继续执行。 CyclicBarrier CyclicBarrier是一个同步辅助类&#xff0c;它允许一…...

偏微分方程算法之抛物型方程差分格式编程示例一

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 从本节开始将对具体的抛物型偏微分问题算例进行C++编程,以加深对抛物型偏微分方程差分格式构造的理解和应用。 采用向前欧拉格式计算抛物型方程初边值问题:...

数据结构—栈(C语言实现)

文章目录 前言一、栈的概念二、栈的代码实现Stack.hStack.c 三、使用栈解决有效的括号问题总结 前言 小伙伴们&#xff0c;大家好哇&#xff01;&#xff01;欢迎来到我的博客&#xff01; 今天来分享一下另外一种数据结构—栈。主要包括栈的基本概念与其代码实现&#xff0c…...

JVM学习-垃圾回收器(一)

垃圾回收器 按线程数分类 串行垃圾回收器 串行回收是在同一时间段内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾收集工作结束 在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;串行回收器的性能表…...

dolphinscheduler standalone安装

官方文档&#xff1a;https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装&#xff08;以放在/home为例&#xff09; 下载见&#xff1a;https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…...

力扣hot 100:49. 字母异位词分组(python C++)

目录 题目描述&#xff1a;题解&#xff08;python&#xff09;&#xff1a;&#xff08;方法一&#xff1a;排序&#xff09;代码解析代码运行解析 题解&#xff08;C&#xff09;&#xff1a;&#xff08;方法一&#xff1a;排序&#xff09;代码解析&运行解析 原题目链接…...

男士内裤什么材质的好?推荐男士内裤的注意事项

天气已经逐渐热了起来&#xff0c;广大男士们在夏天难免会出一身的汗&#xff0c;不少男士朋友都觉得一些吸湿性、透气性不好的内裤会在夏天穿着很不适&#xff0c;想挑选一些比较适合夏天的男士内裤&#xff0c;但现在的男士内裤品牌和材质分类却比较多&#xff0c;看得大家眼…...

Python操作MySQL数据库的工具--sqlalchemy

文章目录 一、pymysql和sqlalchemy的区别二、sqlalchemy的详细使用1.安装库2.核心思想3.整体思路4.sqlalchemy需要连接数据库5.使用步骤1.手动提前创建数据库2.使用代码创建数据表3.用代码操作数据表3.1 增加数据3.2 查询数据3.3 删除数据3.4 修改数据 一、pymysql和sqlalchemy…...

【算法】排序

排序算法在信息学非常常用。Hello&#xff01;大家好&#xff0c;我是学霸小羊&#xff0c;今天讲几个排序算法。 1.“打擂台”排序 思路&#xff1a;a[ i ]和a[ j ]打擂台&#xff08;i<j&#xff09;。 这个方法简单易懂&#xff0c;只需要看看需不需要交换。按从大到小…...

前端开发之xlsx的使用和实例,并导出多个sheet

前端开发之xlsx的使用和实例 前言效果图1、安装2、在页面中引用3、封装工具类&#xff08;excel.js&#xff09;4、在vue中使用 前言 在实现业务功能中导出是必不可少的功能&#xff0c;接下来为大家演示在导出xlsx的时候的操作 效果图 1、安装 npm install xlsx -S npm inst…...

创建数据库数据插入、更新与删除

创建数据库和创建表 一、实验目的 &#xff08;1&#xff09;熟悉和掌握数据库的创建和连接方法&#xff1b; &#xff08;2&#xff09;熟悉和掌握数据库表的建立、修改和删除&#xff1b; &#xff08;3&#xff09;加深对表的实体完整性、参照完整性和用户自定义完整性的…...

【CTF Web】CTFShow web3 Writeup(SQL注入+PHP+UNION注入)

web3 1 管理员被狠狠的教育了&#xff0c;所以决定好好修复一番。这次没问题了。 解法 注意到&#xff1a; <!-- flag in id 1000 -->但是拦截很多种字符。 if(preg_match("/or|\-|\\|\*|\<|\>|\!|x|hex|\/i",$id)){die("id error"); }使用…...

常见API(JDK7时间、JDK8时间、包装类、综合练习)

一、JDK7时间——Date 1、事件相关知识点 2、Date时间类 Data类是一个JDK写好的Javabean类&#xff0c;用来描述时间&#xff0c;精确到毫秒。 利用空参构造创建的对象&#xff0c;默认表示系统当前时间。 利用有参构造创建的对象&#xff0c;表示指定的时间。 练习——时间计…...

UE4SS技术解析:构建虚幻引擎游戏逆向工程与模组开发的完整生态

UE4SS技术解析&#xff1a;构建虚幻引擎游戏逆向工程与模组开发的完整生态 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE…...

本地视频怎么去水印?2026本地视频去水印软件推荐与方法合集

不少朋友都会碰到一个烦恼&#xff1a;从抖音、快手、小红书下载的视频都带着水印&#xff0c;自己录制的视频也会被社交平台自动添加水印。想要去掉这些水印用于素材库或后期编辑&#xff0c;却不知道该怎么办。别急&#xff0c;今天就给你盘点2026年最实用的本地视频去水印方…...

2026年京东云OpenClaw/Hermes Agent配置Token Plan保姆级搭建分享

2026年京东云OpenClaw/Hermes Agent配置Token Plan保姆级搭建分享。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具…...

2026 主流技术栈:hermes agent多环境安装配置:Windows/Mac/Linux

一、Hermes agent 大模型选择 Hermes Agent 通过统一的模型抽象层接入不同厂商的大语言模型服务。实际部署时&#xff0c;建议根据数据合规要求、任务类型和成本预算进行选型。 1.1 国内场景&#xff1a;Kimi K2.6 对于数据需境内处理或存在私有化部署需求的场景&#xff0c…...

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手

苹果CMS V10终极指南&#xff1a;3步打造专业视频网站&#xff0c;新手也能轻松上手 【免费下载链接】maccms10 苹果cms-v10,maccms-v10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序 项目地址: https://gitcode.com/gh…...

为什么你的DeepSeek微调收敛慢?揭秘Attention初始化偏差导致的3轮内loss震荡——附自动校准工具脚本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek注意力机制优化 DeepSeek系列模型在长上下文建模中对标准Transformer注意力进行了系统性重构&#xff0c;核心聚焦于降低计算复杂度与提升内存局部性。其注意力优化并非单一技术点叠加&#xf…...

FPGA 时序优化理论手册

定位:为时序优化手册中每一条规则、每一段代码背后的"为什么"提供物理直觉与数学原理 阅读方式:先读本手册建立理解,再回看时序优化手册对应的操作和代码 目录 第 1 部分 时序分析的物理基础第 1 章 数字电路中的时间:从晶体管到时序公式第 2 章 建立时间与保…...

《QGIS空间数据处理与高级制图》022:融合后拓扑错误预检查

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

通过用量看板与成本管理功能实现团队API支出精细化管控

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过用量看板与成本管理功能实现团队API支出精细化管控 对于依赖大模型API进行开发的团队而言&#xff0c;成本控制与资源分配的透…...

【参数辨识】经典Prandtl–Ishlinskii(PI)迟滞模型及其PSO算法参数辨识【含Matlab源码 15544期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...