【1】LeetCode 136 Single Number

题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数。

解法:容易想到异或的性质,两个相同的数异或为0,那么把这串数从头到尾异或起来,最后的数就是要求的那个数。

代码如下:

class Solution {
public:int singleNumber(vector<int>& nums) {int sum = 0;for(int i=0;i<nums.size();i++) sum ^= nums[i];return sum;}
};

【2】LeetCode 137 Single Number II

题意:给一串数,除了一个数只出现一次外,其他数都出现了三次。求那个单个数。

解法:还是从位操作上考虑,把每个数写成二进制列出来,每位对齐,可以发现,每一位上的1的个数要么是3的倍数,要么是3的倍数+1,那么把每一位的1个数加起来,模3即可的单个数的该位为0还是为1。

代码如下:

class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for(int i=0;i<32;i++) {int dream = (1<<i), cnt = 0;for(int j=0;j<nums.size();j++)cnt += (bool)(nums[j] & dream);cnt = cnt % 3;ans ^= (cnt << i);}return ans;}
};

【3】LeetCode 260 Single Number III

题意:有一串数字,其中有两个不同的数,各出现一次,其他的数都出现2次。找出这两个数。

解法:看到其他数出现两次,又想到异或操作,如果全部异或起来,得到的是那两个数的异或。既然是两个不同的数,那么异或的二进制里面必然是有1的,我们先找出这个1,然后逐个检查,如果这位有1,那么异或到a,否则异或到b,最后的a,b即是这两个值。找1可以找最后一个1,x&(-x)即可。

代码如下:

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {int xorsum = 0;for(int i=0;i<nums.size();i++) xorsum ^= nums[i];int lastdifferentbit = xorsum & (-xorsum);int a = 0, b = 0;for(int i=0;i<nums.size();i++) {if(nums[i] & lastdifferentbit) a ^= nums[i];else b ^= nums[i];}return vector<int>{a,b};}
};

转载于:https://www.cnblogs.com/whatbeg/p/5269453.html

LeetCode Single Number I / II / III相关推荐

  1. LeetCode: Single Number I II

    Given an array of integers, every element appears twice except for one. Find that single one. 这个方法重来 ...

  2. [LeetCode]Single Number II

    今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...

  3. leetcode -day8 Copy List with Random Pointer Single Number I II

    五一中间断了几天,开始继续... 1.  Copy List with Random Pointer A linked list is given such that each node cont ...

  4. [Leetcode] single number ii 找单个数

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  5. LeetCode Single Number III(位操作)

    问题:给出一个数组,有两个数只出现一次,其它都出现两次. 思路:先对数组求异或,得到两个数异域的结果.然后确定差异的最低位.再将数组与这个差异位作异域,得到其中的一个数.再与异域结果异域后即得到另外一 ...

  6. LeetCode Single Number II(位操作)

    问题:给出一个数组,其中只有一个数出现一次,其它数出现三次,找出出现一次的数 思路: 1.统计每位出现的次数,如果mod 3等于1,则将该位置为1,最后即得到出现一次的数. 2.使用三个变量来分别来表 ...

  7. leetcode - Single Number

    今天开始刷leetcode上的题,争取校招前刷过一遍,从AC率最高的题目开始刷,不废话了,看题 题目:Single Number Given an array of integers, every e ...

  8. leetcode Single Number python

    Single Number Given an array of integers, every element appears twice except for one. Find that sing ...

  9. leetcode 263, 264, 1201, 313. Ugly Number I, II, III, Super Ugly Number(leetcode 丑数问题合集)

    263. Ugly Number https://leetcode.com/problems/ugly-number/ 本题题解由下面的 264. Ugly Number II 改造而来,所以效率会比 ...

最新文章

  1. comsat java_java-com.thoughtworks.xstream.converters.ConversionExce...
  2. 查看ngnix使用的php.ini位置_修改Nginx php.ini文件的经典教程
  3. 采集文件到kafka
  4. 九九乘法表的C语言实现
  5. php补充 扩展,PHP安装扩展补充说明
  6. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
  7. 采访实录:黄碟泛滥的市场调查
  8. poj 2503 Babelfish trie树!!!!指针版和数组版 基础
  9. python五子棋游戏代码实现
  10. Maven之POM文件build标签详解
  11. 电子通讯录(数据库版存储)
  12. 会计信息质量可靠性的案例_论会计信息质量特征及其可靠性
  13. 块存储、文件存储、对象存储
  14. 法拉科机器人接头_【发那科】图解FANUC机器人I/O信号板
  15. 下载centOS,下载各种linux版本的镜像,来这里!
  16. Python轻量级ORM框架——peewee
  17. mysql useing_MySQL ON与USING?
  18. 扩展欧几里得算法、乘法逆元与中国剩余定理
  19. Docker 容器技术入门
  20. 【前端面试】39道Vue高频面试题,亲测有效!!!快来看看呀!!

热门文章

  1. storyboard用代码跳转
  2. 话里话外:按单制造企业用什么来做生产计划
  3. IP设置的批处理文件
  4. 图解XP局域网共享设置教程汇总A
  5. android室内地图控件,[开源] Android InDoorView 室内选位控件
  6. 设计企业网站大纲_深圳企业网站设计公司|品牌网站设计【尼高网站设计】
  7. 2019-12-17 TCP报头结构
  8. php mysql 备份还原_php 数据库备份还原
  9. arduino eeg脑电模块_应用深度学习EEGNet来处理脑电信号
  10. Sprin boot 加载位置顺序