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

加拿大28网站建设全媒体运营师报考条件

加拿大28网站建设,全媒体运营师报考条件,网站建设的教程,合肥高端网站建设设计题目: 给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。 示例 1&…

题目:

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。

示例 1:

输入:nums = [1,2,1,3,2,5]
输出:[3,5]
解释:[5, 3] 也是有效的答案。

示例 2:

输入:nums = [-1,0]
输出:[-1,0]

示例 3:

输入:nums = [0,1]
输出:[1,0]

提示:

  • 2 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • 除两个只出现一次的整数外,nums 中的其他数字都出现两次

思路:

1 所有数字异或,结果是只出现一次的两个数字的异或结果

  (异或:相同为0,相异为1,0与任何数异或都是数字本身)

2 得到答案的两个数字异或的结果,区分这两个数字:

    (这两个数字互不相同,则一定在某些二进制位上,一个数字是1,另一个数字则对应是0)

异或的结果,它所有的二进制位中一定存在二进制位为1的,此位置的二进制位就可以区分

a 在异或结果中找到一个可以区分两个数字的二进制位

   数字&(-数字):可以得到此数字二进制位中最低位的1,这里称之为j

   那么异或结果&(-异或结果):就是异或结果二进制位中最低位的1

注意:若异或结果是INT_MIN,即(-2147483648)

           原码: 1000 0000  0000  0000  0000  0000  0000  0000

          用于位运算的补码溢出了

          所以当异或结果为INT_MIN时,异或结果本身就是最低位的1,不用进行位运算

INT_MAX :0111 1111 1111 1111 1111 1111 1111 1111

-INT_MAX的补码:1000 0000 0000 0000 0000 0000 0000 0001

都没有溢出,所以INT_MAX是可以进行位运算来获取INT_MAX二进制中最低位的1

如:3: 00000000 00000000 00000000 00000011(整数的原码,反码,补码都相同)

       -3的原码: 10000000 00000000 00000000 00000011(位运算都要用补码)

     -3的反码:    11111111 11111111 11111111 11111100(原码的符号位不变,其他位按位取反)

    -3的补码:     11111111 11111111 11111111 11111101(补码+1)

3&(-3):00000000 00000000 00000000 00000011

              &   11111111 11111111 11111111 11111101

结果:        00000000 00000000 00000000 00000001(3最低位的那个1)

再如:

 

b 根据j,将所有数字划分成两个阵营,分别异或在一起

    出现两次的数字一定在同一阵营,异或一定为0

    某数字&j为1:表示此数字在作为区分的二进制位上数值为1

    某数字&j为0:表示此数字在作为区分的二进制位上数值为0

    最终两阵营的结果就是两个答案了

代码实现:

class Solution
{
public:vector<int> singleNumber(vector<int>& nums){int k = 0;//所有数字异或的结果for(auto e:nums){k^=e;}int j =k==INT_MIN?k: k&(-k);//异或结果二进制中最低位的1int ret1 = 0;int ret2 = 0;for(auto e:nums){if(e&j)//在作为区分的二进制上数值为1{ret1^=e;}else在作为区分的二进制上数值为0{ret2^=e;}}return {ret1,ret2};}
};

    

 

http://www.hkea.cn/news/128698/

相关文章:

  • seo神马网站推广器怎么做神马搜索排名seo
  • 桂林漓江景区网站优化推广排名
  • 网站首页模板设计图网络推广平台代理
  • 一女被多男做的视频网站搜全网的浏览器
  • 建设公司网站费用电脑培训课程
  • 电子商务网站建设课后题女生学网络营销这个专业好吗
  • 新疆兵团建设网站商丘seo优化
  • 手机微信网站怎么做的软文发布网站
  • 传奇手游发布网站seo排名优化方式
  • 网站建设明细报价外链信息
  • 哪个网站做漫画可以有钱营销型网站设计
  • wordpress在线视频直播湖南正规关键词优化
  • 花木企业网站源码全网推广的方式
  • 网站开发商怎么关闭图片显示站长之家新网址
  • 灯饰如何做网站推广纯手工seo公司
  • 晋中公司做网站seo站长之家
  • 到哪里找人做网站优化seo培训班
  • 深圳网站开发哪家专业搜索到的相关信息
  • 湖北武汉网站制作引擎搜索下载
  • 做网站登录的需求分析seo点击排名工具有用吗
  • 诸暨住房和城乡建设委员会网站怎么制作网站?
  • 昆明cms建站模板视频号排名优化帝搜软件
  • 商务咨询网站源码重庆网站建设哪家好
  • 建设部网站从何时可以查询工程师证深圳全网推广服务
  • 网页制作工具的选择与网站整体风格是有关系的友情链接论坛
  • 免费商会网站模板百度推广账号
  • 玄武模板网站制作品牌关键词排名点击软件网站
  • 网站title的写法微信软文怎么写
  • 设计企业网站流程磁力引擎
  • 橙色企业网站模板域名注册购买