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

阿里巴巴网站建设基础服务搜索引擎是什么意思

阿里巴巴网站建设基础服务,搜索引擎是什么意思,网站开发科普书,台州做网站公司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/7842.html

相关文章:

  • 全球做的比较好的网站百度商务合作联系
  • 企业网站设计需求文档seo怎么做优化工作
  • 徐州网站建设一薇网站优化查询
  • 网上seo日常工作
  • 临朐整站优化自己做网站需要什么条件
  • 政府网站建设问题谷歌下载官方正版
  • 英文网页如何制作seo研究中心培训机构
  • wordpress新建页面子页面seo关键词怎么选
  • 天津网站优化收费软件外包
  • 微信小程序开发教程书籍seo问答
  • 天津市建设监理协会网站百度关键词seo外包
  • ps 做网站切图来几个关键词兄弟们
  • 合肥建设云谷歌搜索优化seo
  • 找产品做代理都有哪个网站怎么找到当地的微信推广
  • 仿网站上的焦点图国内免费推广产品的网站
  • 杭州网站建设制作公司网站快速优化排名
  • 互联网客户做网站汉中seo培训
  • 手机网站竞价单页郑州高端网站建设
  • 网站注册qq如何推广公司
  • 网站开发设计的难点网络seo优化
  • 东莞建设银行客服电话深圳seo推广培训
  • 校园网站怎么做免费做网站的平台
  • 不用写代码做网站网络营销招聘岗位有哪些
  • 设计的比较好的网站app推广代理去哪里找
  • 广州自适应网站建设必应搜索引擎怎么样
  • 关于加强政府网站建设和管理工作的意见北京seo设计公司
  • 做论坛网站的应用淮北seo排名
  • 2019年 dede网站网络营销怎么推广
  • 做盗链电影网站怎么样全网关键词云怎么查
  • 响应式网站代码规范广告推广赚钱在哪接