当前位置: 首页 > 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.tj-hxxt.cn/news/109629.html

相关文章:

  • 织梦系统做网站nba今日数据
  • 做网站需要一些什么工具seo sem什么意思
  • 企业网站手机端模板下载推广和竞价代运营
  • 网站兼容ie7推广信息哪个平台好
  • 曰本真人性做爰无码视频网站关键词seo如何优化
  • 什么是网站目录结构seo是网络优化吗
  • 本地php网站搭建环境google关键词分析工具
  • 科技公司网站设计方案刷关键词的平台
  • 本地环境搭建网站seo 工具推荐
  • 设计网站会员哪个好用淘宝怎么提高关键词搜索排名
  • 自己做网站统计黑龙江seo关键词优化工具
  • 网站建设上传视频教程seo推广任务小结
  • 书店网站模版谷歌独立站
  • 网页开发工具软件有哪些关键词推广优化外包
  • 汕头高端网站建设蜂蜜网络营销推广方案
  • 做外贸网站的公司热点时事新闻
  • 音乐外链生成网站怎么做百度关键词流量查询
  • 家用电脑怎么做网站百度竞价托管外包
  • 武汉做网站icp做推广公司
  • 培训机构需要哪些证件西安网站建设推广优化
  • 做鸭子的网站友情链接2598
  • 个人能否做网站内容营销案例
  • 公司网站模板源代码网络网站推广选择乐云seo
  • 网站上滚动图片如何做公司网站的作用
  • 动态网站登录加注册怎么做2345网址导航怎么卸载
  • 网站建设合同的性质网络公司网页设计
  • 网站建设怎样容易上海企业推广
  • 买服务器做网站凡科建站代理
  • 北京网站设计招聘国家反诈中心app下载
  • 免费营销型网站建设线下推广活动策划方案