博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
260. Single Number III
阅读量:5094 次
发布时间:2019-06-13

本文共 946 字,大约阅读时间需要 3 分钟。

Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.

For example:

Given nums = [1, 2, 1, 3, 2, 5], return [3, 5].

一个数组里存在两个只出现一次的数字,其余的均出现两次,找出那两个数。

对于找出只出现一次的数字,用异或最简单,但是这里有两个,显然全体数组一起异或是不行的。

所以要分组异或,分组的目的是把两个数分别放到两个子数组中,这样异或后的值就是答案。

关键是如何分组,考虑到两个不同的数必然有一位数字不同,假设是第r位不同,那么就可以把第r位是1的分为一组,其余的另成一组,这样两个数字必然在两个组。

接下来是如何找到那个r,解决办法就是全体异或一遍,找到一个值为1的位就可以了。

1 class Solution { 2 public: 3     vector
singleNumber(vector
& nums) { 4 vector
res; 5 if( nums.empty() ) 6 return res; 7 int k = nums[0]; 8 for( int i=1; i
<< 1;14 15 vector
res1;16 vector
res2;17 for( int i=0; i

 

转载于:https://www.cnblogs.com/Zzz-y/p/8633215.html

你可能感兴趣的文章
下载文件
查看>>
131125 - 关于对“一次元”、“二次元”、“三次元”的兴趣变化的奇思妙想
查看>>
HDU 2136 Largest prime factor
查看>>
POJ 3360 H-Cow Contest
查看>>
#Leetcode# 209. Minimum Size Subarray Sum
查看>>
2019省赛训练组队赛4.11周四 2014浙江省赛
查看>>
HDU 2084 数塔
查看>>
android 界面切换【转】
查看>>
JavaScript我学之七数组
查看>>
BETA冲刺(6/7)
查看>>
Poj(2679),SPFA,邻接表(主流写法)
查看>>
51nod 1277 字符串中的最大值(KMP算法)
查看>>
SQL HAVING 用法详解
查看>>
乘风破浪:LeetCode真题_027_Remove Element
查看>>
HTML页面格式
查看>>
安装searchd
查看>>
django Form 效验
查看>>
标准的并发控制实现
查看>>
反ring3 hook demo ,直接从dll文件修复 dll的code段,实现反hook
查看>>
soa---java 多线程的---锁
查看>>