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

阿里巴巴网站建设基础服务seo短期课程

阿里巴巴网站建设基础服务,seo短期课程,微信网站欣赏,web开发培训机构1. 题目 给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转图片的意思是图片中的 0 全部被…

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)

http://www.dtcms.com/wzjs/468235.html

相关文章:

  • 深圳住房城乡建设局网站首页优化网站建设
  • 有些网站打开特别慢营销推广计划怎么写
  • 石家庄做网站的公司排名优化关键词公司
  • 付费问答 WordPress武汉网站建设方案优化
  • 免费做网站哪家好新闻热点事件2024最新
  • 帮忙做ppt赚钱的网站seo查询友情链接
  • php做网站难吗搜索引擎优化seo优惠
  • 大兴网站建设制作品牌推广方案案例
  • 网站建设地带精准营销平台
  • 福建有没有网站做鞋子一件代发网站收录提交
  • 开平网站建设推广发帖网站
  • web集团网站建设win7系统优化软件
  • 小微企业名录查询系统宁波seo如何做推广平台
  • 武汉网站建设公司哪家好网站搜索引擎优化报告
  • 专业网站设计网站现在最火的发帖平台
  • 做网站时点击显示班级优化大师免费下载安装
  • 学校网站建设目的百度搜索竞价排名
  • 用书籍上的文章做网站更新成人短期电脑培训班学费
  • 2019个人建设网站找培训机构的app
  • 建设网站招标如何在网上推广自己的产品
  • 做不好的网站违法吗浙江seo公司
  • 网站登录注册做验证码的目地百度推广营销方案
  • 太原做网站多少钱网络公司网络推广服务
  • 给个免费的网址找索引擎seo
  • 石家网站建设公司排名百度新闻头条
  • 怎么做网贷网站seo是什么意思新手怎么做seo
  • 公司门户网站开发成都网络营销搜索推广
  • 南通网站关键词推广商丘seo优化
  • 网络公司 网站建设 小程序网络优化工程师有前途吗
  • wordpress好操作吗seo优化信