剑指offer——面试题40:数组中只出现一次的数字

Solution1:

书中展示了很棒的思路:
关于异或的两个性质应该知道:
(1) X^X = 0;
(2) X^0 = X;

class Solution {
public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { //data是整型数组,num1和num2是两个只出现一次的数字if(data.size() < 2)return;int Res_All_XOR = 0, res_one = 0, res_two = 0;for(int i = 0; i < data.size(); i++)Res_All_XOR ^= data[i];int first_bit_1 = FindFirstBit1(Res_All_XOR);for(int i = 0; i < data.size(); i++) {if(IsBit1(data[i], first_bit_1))res_one ^= data[i];else res_two ^= data[i];}*num1 = res_one;*num2 = res_two;return;}int FindFirstBit1(int n){ //找到第一位是1的位置int count = 0;while(n != 0) {if(n%2 == 1){count++;return count;}else {count++;n /= 2;}}return 0;}bool IsBit1(int n, int k){ //判断n的第k位是否是1,true or falseint temp = n >> (k-1);if(temp%2 == 1)return true;else return false;}
};

【难题+重点】剑指offer——面试题40:数组中只出现一次的数字相关推荐

  1. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  2. 【剑指offer-Java版】40数组中只出现一次的数字

    数组中只出现一次的数字:输入一个数组,该数组中有两个数字只出现了一次,其他数字都出现了两次,求出这两个只出现了一次的数字 要求时间复杂度为O(n)空间复杂度为O(1) 考虑一个数组中只有一个数字仅仅出 ...

  3. 剑指 Offer II 070. 排序数组中只出现一次的数字

    找出那只单身狗: 正文开始@Assassin 目录: 找出那只单身狗: 1. 题目描述: 2. 思路: 2.1 异或的基本概念: 2.1.1 符号表示: 2.1.2 运算规则: 2.1.3 异或的性质 ...

  4. 剑指offer面试题[29]-数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  5. 剑指Offer - 面试题51. 数组中的逆序对(归并排序,求逆序对)

    1. 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5限制: 0 ...

  6. 剑指Offer - 面试题3. 数组中重复的数字(哈希)

    1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...

  7. 剑指offer 面试题03. 数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  8. 剑指offer面试题[36]-数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  9. 剑指offer面试题[51]-数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  10. 剑指offer面试题39. 数组中出现次数超过一半的数字(数组)(摩尔投票法)

    题目描述 **数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素.** 思路 详见链接 代码 class Solution:def ...

最新文章

  1. 志澄观察:卫星互联网——太空经济新动力
  2. 阿里基础设施技术亮相SIGCOMM 2018
  3. mysql删除不存在行数据报错_MySQL学习笔记11复制错误处理(二)删除不存在的行的问题...
  4. 假设一动态集合S用一个长度为m的直接寻址表T来表示。请给出一个查找S中最大元素的过程。(算法导论第十一章11.1-1)
  5. java多参方法_Java中多参数方法进阶
  6. react native android6+拍照闪退或重启的解决方案
  7. Unity3d接入视频监控
  8. 测试驱动javascript开发 -- 3.测试驱动开发过程(上)
  9. Rize - 一个可以让你简单、优雅地使用 puppeteer 的 Node.js 库
  10. rhce考试试题以及答案_RedHat红帽认证 RHCE 7.0题库和答案
  11. Java-集合练习题(1)
  12. 都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行使用方法
  13. IntelliJ IDEA中项目界面右上角中没有SVN工具按钮
  14. 请把西游记倒过来看!
  15. 为啥214被塞狗粮的单身汪,520还会被塞狗粮
  16. 跑步时戴什么耳机好、分享五款最适合跑步的运动耳机排名清单
  17. 中型仓储货架是使用三立柱货架好,还是使用两立柱货架好?
  18. STM32之BKP原理
  19. 模糊图片(动漫)转高清 (aardio GUI),优质图片处理软件
  20. C语言之复合类型下卷(十九)(自然法则)(2023)

热门文章

  1. python---之os.path.splitext(“文件路径”)
  2. pytorch-tensorflow版本选择-cuda8-cudnn5.1
  3. 【字符串】面试题之奇偶字符串分离
  4. 华为在鸿蒙的另一张王牌,华为的这两张王牌,将助力Mate40系列角逐安卓机皇的位置...
  5. linux如何退出python编辑器_怎么退出python
  6. 新版linux系统主机最低配置,Linux系统初始配置标准化
  7. python立即关机_“python怎么控制计算机关机“python自动关机教程
  8. 百度竞价排名曝光_企业入驻百度爱采购必须选好本地运营服务商
  9. 计算机网络中enable,第一章 计算机网络结构概述1、 enable# conf
  10. mysql job status_检查SQL Server Job状态