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

网站建设图书网站模板下载后怎么使用

网站建设图书,网站模板下载后怎么使用,杭州龙席网络seo,环艺毕业设计代做网站题目 - 点击直达 1. 260. 只出现一次的数字 III 中等1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 260. 只出现一次的数字 III 中等 1. 题目详情 1. 原题链接 LeetCode 260. 只出现一次的数字 III 中等 2. 题目要求 …

题目 - 点击直达

  • 1. 260. 只出现一次的数字 III 中等
    • 1. 题目详情
      • 1. 原题链接
      • 2. 题目要求
      • 3. 基础框架
    • 2. 解题思路
      • 1. 思路分析
      • 2. 时间复杂度
      • 3. 代码实现

1. 260. 只出现一次的数字 III 中等

1. 题目详情

1. 原题链接

LeetCode 260. 只出现一次的数字 III 中等

2. 题目要求

给你一个整数数组 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 < = n u m s . l e n g t h < = 3 ∗ 104 2 <= nums.length <= 3 * 104 2<=nums.length<=3104
− 231 < = n u m s [ i ] < = 231 − 1 -231 <= nums[i] <= 231 - 1 231<=nums[i]<=2311
除两个只出现一次的整数外, n u m s nums nums 中的其他数字都出现两次

3. 基础框架

● Cpp代码框架

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {}
};

2. 解题思路

通过异或把数组 n u m s nums nums分成分别只包含一个只出现一次的数的两个部分,分别对这两个部分异或从而分别得到这两个部分的结果 r e t 1 ret1 ret1 r e t 2 ret2 ret2

1. 思路分析

( 1 ) (1) (1) 如何把这两个只出现一次的不同的数分隔到不同的两部分呢?
突破点就在于,不同的这两个数是不同的 r e t 1 ret1 ret1 r e t 2 ret2 ret2,两个整数的不同表现在bit位至少有1位是不同的,而数组中其他数都是出现两次,通过这个不同的bit位既可以把 r e t 1 ret1 ret1 r e t 2 ret2 ret2分开,也会把 n u m s nums nums中其他的数分开且相同的数一定分在同一组,因为相同的数,bit位一定相同。
( 2 ) (2) (2) 首先对 n u m s nums nums中所有的数进行异或,等价于 r e t 1 ret1 ret1 r e t 2 ret2 ret2异或,结果保存在 o p t R e t optRet optRet中;
( 3 ) (3) (3) 找到 o p t R e t optRet optRet中一个为1的bit位,把该位置对应的下标记录在 i n d e x B i t indexBit indexBit中;
( 4 ) (4) (4) 遍历 n u m s nums nums数组,根据每一个数的 i n d e x B i t indexBit indexBit位置是0还是1进行分组;
( 5 ) (5) (5) 对于分隔的两组来说,分别对每一组中所有元素进行异或,得到的结果就是这一组中唯一出现的数,记录在 r e t 1 ret1 ret1 r e t 2 ret2 ret2中;
( 6 ) (6) (6) 返回结果
如何得到具体的某一位bit位?
比如 n u m b e r = 10 number = 10 number=10,二进制 00000000000000000000000000010010 00000000 00000000 00000000 00010010 00000000000000000000000000010010;
得到第5个bit位,期望第5个bit位是1;
(number >> 4) & 1 :使number右移4个bit位,再与1按位与的结果就是第5个bit位的值;
number右移4个bit位: 00000000000000000000000000000001 00000000 00000000 00000000 00000001 00000000000000000000000000000001
再和1按位与: 00000000000000000000000000000001 00000000 00000000 00000000 00000001 00000000000000000000000000000001

2. 时间复杂度

O ( N ) O(N) O(N)

第一次遍历 n u m s nums nums数组计算所有数异或的结果;
第二次遍历至多32次找到第一个不相等的bit位下标;
第三次遍历 n u m s nums nums数组把数组分成两部分,同时不同组的数之间进行异或,最终得到两个结果;
这三次遍历先后并列进行, 2 ∗ N + 32 2*N+32 2N+32

3. 代码实现

位运算-异或

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {int ret1 = 0, ret2 = 0;// 得到 单独出现的两个不同的数 异或的结果int optRet = 0;for(auto& e : nums){optRet ^= e;}// 找到 tmp中第一个为1的bit位,两个不同的数的该bit位的值一个是1,一个是0// 通过这个bit位,把nums数组的元素可以分成两个部分:// 第一部分,只有一个元素出现一次,其他的元素都出现两次;// 第二部分,只有另一个元素出现一次,另外其他元素的元素都出现两次;// 这样就使得问题简化为分别在两个数组中找到只出现一次的元素了int indexBit = 0;while(indexBit < 32){if(((optRet >> index) & 1) == 1){break;}indexBit++;}// 遍历nums数组,第一部分的元素结果在ret1中// 第二部分的结果记录在ret2中for(auto& e : nums){if(((e >> indexBit) & 1) == 1){ret1 ^= e;}else{ret2 ^= e;}}return vector<int>{ret1, ret2};}
};

哈希映射

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {vector<int> ret;ret.reserve(2);unordered_map<int, int> m;for(auto& e : nums){m[e]++;}for(auto& e : nums){if(m[e] == 1){ret.push_back(e);}}return ret;}
};

T h e The The E n d End End

http://www.yayakq.cn/news/885692/

相关文章:

  • 常州外贸网站建设公司58建筑网官网
  • 双语网站方法广西哪里有网站建设
  • 怎么自己建立网站及建立网站方法品牌创意设计公司
  • 有哪些可以做调查的网站微信群网站有哪些
  • 罗定网站建设网站流量图怎么做
  • 郑州的建设网站有哪些手续费wordpress资源站源码
  • 免费看片网站网站建设单子
  • 永春网站建设如何使用表格做网站
  • 慈溪网站建设网站评测的作用
  • 用jsp做的网站首页手机怎么修改网页内容
  • 心悦dnf免做卡网站做网站商城的小图标软件
  • 建设公司的网站制作上海做公司网站的公司
  • 企业网站建设市场前景北京的建筑公司有哪些
  • 嘉兴做网站涪陵网站建设公司
  • 刚做的网站为什么百度搜不出来网站建设武清
  • 大连网站建设哪家公司好电商代运营十大公司排名
  • qq钓鱼网站生成器手机版怎么注销网站备案
  • 百度怎么做网站域名html是静态网站
  • 网站建设及网页设计教案淘客网站让别人做
  • 凤岗金属制品东莞网站建设技术支持网站怎么设关键词
  • 合肥seo网站建设费用沈阳做企业网站的
  • 赛罕区城乡建设局网站wordpress 时光网
  • 我的专业网站建设策划书营销型网站一个多少钱
  • 获取网站缩略图的asp代码网站开发语言怎么选
  • 管网建设网站wordpress邮箱评论
  • 做家教网站资质东莞常平二手房
  • 做黑网站赚钱吗九宫格导航网站
  • 收废铁的做网站有优点吗惠州市跨境电子商务网站开发
  • 网站模型怎么做的网站设计论文范文大全集
  • 世界上有一个wordpress站点网页界面设计中常用的中英文字体有哪些