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

西安做网站随机关键词生成器

西安做网站,随机关键词生成器,成都网站建设的公司哪家好,南充公司做网站一、题目 给你一个整数数组 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]

二、思路解析

首先,我们可以先做个小优化:当 nums 数组长度为 2 时,说明这两个元素一定只出现了一次,直接返回即可。

然后就要利用到我们熟悉的两条公式:

x ^ x = 0 

x ^ 0 = x 

由于数组中除了两个数字之外,其他数字都出现了两次,因此我们对数组中的所有数字进行异或运算,得到的结果即为两个只出现一次的数字的异或结果。

在第三部分的代码中,我用 n1 和 n2 表示这两个数。

再对数组使用一次 lowbit 运算,目的是根据最低位的不同,把这两个只出现一次的数字分到两个不同的组。

接着我们在遍历一次数组,当有元素和 lowbit 进行或运算后还不等于零,则他就是 n1 了。

另一个只出现一次的数,就让 n1 和 Double 异或一下就出来了,因为 Double 本身就是这两个数的异或。

三、完整代码

class Solution {public int[] singleNumber(int[] nums) {if(nums.length == 2){return nums;}int Double = 0;for(int i = 0 ; i < nums.length ; i ++){Double ^= nums[i];}int n1 = 0;int lowbit = Double & -Double;for(int j = 0 ; j < nums.length ; j ++){if((nums[j] & lowbit) != 0){n1 ^= nums[j];}  }int n2 = Double ^ n1;return new int[]{n1 , n2};}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

http://www.rdtb.cn/news/14615.html

相关文章:

  • 国外vps做网站测速白帽seo公司
  • 做网站需要投入多少钱廊坊seo外包公司费用
  • 使用dw设计个人简历网页模板百度网站优化
  • 做网站首页的表格的代码一份完整的活动策划方案
  • 六安建设机械网站千网推软文推广平台
  • 网站首页title怎么修改重庆seo标准
  • 网站无icp备案长沙推广引流
  • 海南州公司网站建设百度客户端在哪里打开
  • 哪个做企业网站什么叫口碑营销
  • 河北建设厅网站刷身份证电商平台怎么做
  • 网站建设与管理教程 全套深圳seo网络优化公司
  • 成都网站制作-中国互联网络营销推广方式案例
  • 地方网站怎么做的搜索引擎优化的特点
  • 东莞市做网站的广州白云区新闻头条最新消息今天
  • wordpress编辑器缓慢深圳正规seo
  • 有哪些设计的很优秀的网站足球进球排行榜
  • 去掉博客网站链接后面的wordpress中国重大新闻
  • 网站测试毕设代做提高工作效率的软件
  • 网站维护费怎么做分录网络上如何推广网站
  • 织梦cms做电影网站seo网站快速排名
  • html5微网站demo视频专用客户端app
  • 湖南做网站 e磐石网络bt磁力搜索引擎
  • 客户管理系统 wordpress贵州seo培训
  • 广西网站建设智能优化上海推广系统
  • 那个网站专做地质基础信息百度收录要多久
  • 中国建设部网官方网站宁波网络推广外包
  • java做网站涉及的技术抖音seo排名优化软件
  • 微信网页版官网二维码搜索引擎优化的实验结果分析
  • 什么网站可以免费做试卷湖南seo推广多少钱
  • 佛山网吧什么时候恢复营业温州seo教程