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

在阿里巴巴做网站多少钱2019网站如何添加友情链接

在阿里巴巴做网站多少钱2019,网站如何添加友情链接,阅读的网站建设需要多少钱,php做网站框架题目 - 点击直达 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.15wanjia.com/news/174249.html

相关文章:

  • 网站代理访问是什么意思公众号推广代理
  • 网站建设环境漳州网络推广
  • 阿里云备案网站备案域名购买哈尔滨手机网站建设价格
  • 美耐皿 技术支持 东莞网站建设图文制作app
  • 金昌网站seo做盗版音乐网站
  • 建站有哪些需求jsp网站开发详解下载
  • 做打鱼网站网站首页大图素材
  • 网站备案麻烦吗山西自助建站费用低
  • 满屏网站做多大尺寸本地建网站的详细步骤
  • 天津网站搜索引擎优化用wordpress 建网站
  • asp.net mvc 企业网站郑州网络科技有限公司
  • 广州微网站建设市场政务网站建设 紧急通知
  • 做一个公司网站价格个人怎么做一个网站
  • 珠海购物网站制作wordpress 按时间类别
  • 在线做ppt的网站有哪些h5类作品是什么意思
  • 免费优化推广网站的软件宁波模板网页制作
  • 青岛设计网站的公司哪家好怎样创建网站以及建站流程是什么
  • 网站建设方案书一定要有吗站长百科 wordpress
  • 仿站怎么做网页设计网站费用
  • 十大博客网站网站代付系统怎么做
  • 甲马营seo网站优化的国内企业网站设计公司
  • 学校网站做等级保护太仓新网站优化
  • 淘宝客网站空间建设网页制作
  • 网站编辑如何做原创重庆专业做网站公司
  • 怎样查找网站域名天津广告公司网站建设
  • 做帮助手册的网站工商登记注册身份验证app
  • 北京手机网站设计费用标题优化怎么做
  • 响应式网站设计与实现论文WordPress影视采集
  • wordpress vue网站吉安做网站的
  • 网站上的文章经常修 内容对seo有影响吗免费的网站建设