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

国外的建筑设计网站百度推广获客

国外的建筑设计网站,百度推广获客,《php网站开发实例教程》,免费家政网站建设一.题目描述 消失的两个数字 二.思路分析 本题难度标签是困难,但实际上有了只出现一次的数字iii这道题的铺垫,本题的思路还是很容易想到的。 温馨提示:阅读本文前可以先查看我的【位运算】专栏的第一篇文章,其中包含位运算这类…

一.题目描述

消失的两个数字

二.思路分析

本题难度标签是困难,但实际上有了只出现一次的数字iii这道题的铺垫,本题的思路还是很容易想到的。

温馨提示:阅读本文前可以先查看我的【位运算】专栏的第一篇文章,其中包含位运算这类题型的常用技巧以及前面这道题的讲解。

言归正传,这道题最容易想到的解法应该是哈希表,遍历数组,用哈希表记录每个元素出现的次数。然后再遍历哈希表,出现次数为0的元素就是我们要找的答案。但是空间复杂度为O(n),不符合题目要求。

下面介绍位运算的方法:

若数组的长度为n,则数组缺少了[1, n+2]中的两个数。

先将从1到n+2的所有整数异或在一起,然后再异或数组的每个元素。异或的特点是“消消乐”,即两个相同的数异或会变成0,故最终的结果tmp相当于这两个缺失的数异或。

这两个数既然不同,那么它们至少有一个比特位不一样,我们可以遍历tmp的每一个比特位,如果它是1,则说明两个数的这一位不相同(异或的规则是相异为1),记录这一位置。

随后我们根据这一比特位的不同,将[1,n+2]的整数以及数组的所有元素划分为两组,分别进行异或,相同的元素会消去,最终得到的就是我们要找的两个数。

三.代码实现

class Solution {
public:vector<int> missingTwo(vector<int>& nums) {int n = nums.size();int tmp = 0;//将所有数异或在一起for (int i = 1; i <= n + 2; i++){tmp ^= i;}for (auto e : nums){tmp ^= e;}//找出缺失的两个数字哪一比特位不相同int pos = 0;for (int i = 0; i <= 31; i++){if (((tmp >> i) & 1) == 1){pos = i;break;}}//根据这一比特位不同,划分为两组分别异或int ret1 = 0, ret2 = 0;for (int i = 1; i <= n + 2; i++){if (((i >> pos) & 1) == 1){ret1 ^= i;}else{ret2 ^= i;}}for (auto e : nums){if (((e >> pos) & 1) == 1){ret1 ^= e;}else{ret2 ^= e;}}return {ret1, ret2};}
};

欢迎进入我的主页,翻阅算法专栏,学习更多有趣的算法。

 

http://www.tj-hxxt.cn/news/35109.html

相关文章:

  • 郑州做网站推广电话百度明星人气榜排名
  • 做网站推广需要做什么seo培训讲师招聘
  • 网站怎么做短信营销临沂网站建设公司哪家好
  • 电子商务是什么职业百度seo发包工具
  • 2019做网站赚钱么2023年火爆的新闻
  • 网站禁止被采集郑州网站定制
  • 零配件加工东莞网站建设技术支持中国互联网协会官网
  • 网站都要备案吗谷歌下载官方正版
  • 百度云wordpress怎么搭建网站seo服务合同
  • 灵感集网站厦门网站推广费用
  • 湖南长沙appseo案例分析
  • 东莞网站建设it s国外免费网站服务器
  • 中国做网站的网站百度站长平台论坛
  • 新手做网站需要哪些软件google搜索网址
  • 网站表格边框怎么做网络营销成功的品牌
  • 网站后台代码添加图片互联网推广渠道
  • 用织梦做的网站怎么管理谷歌在线搜索
  • 模板之家官网手机模板seo搜索引擎推广什么意思
  • 福州做网站设计安卓手机游戏优化器
  • 安阳网站制作哪家好百度指数的搜索指数代表什么
  • 北京百度网讯科技有限公司关键词首页排名优化平台
  • 发展历程 网站建设seo范畴有哪些
  • 工商网站如何做实名百度问答下载安装
  • 招聘网站数据分析怎么做剪辑培训班一般学费多少
  • 做智能网站软件下载百度广告搜索引擎
  • 做网站前端的软件新媒体运营工作是什么
  • 网站特色怎么写seo优化厂商
  • 做网站至少多少钱百度识图扫一扫
  • 火车头wordpress发布缩略图成都关键词优化平台
  • 要制作一个自己的网站建站系统