题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

思路: 采用异或,能找出一个数组中一个只出现一次的数字,题目中要求是两个。可以根据这种想法,把数组一分为二,左边的子数组异或得到一个数,右边的子数组 异或得到一个数,左右子树组的划分,首先把数组异或得到两个不同数的异或结果,找到他们最右边的1出现的位置,根据对应为为1,来划分数组。

public class Solution {
public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) {if (array == null || array.length < 2)return;int bitResult = 0;for (int i = 0; i < array.length; i++)bitResult ^= array[i];int index = findFirstBitIs1(bitResult);for (int i = 0; i < array.length; i++)if (isBit1(array[i], index))num1[0] ^= array[i];elsenum2[0] ^= array[i];}// 判断target的右侧index位是否为1private boolean isBit1(int target, int index) {return ((target >> index) & 1) == 1;}// 查找num右侧第一个1的下标private int findFirstBitIs1(int num) {int indexBit = 0;// 注意判断位数合法性while ((num & 1) == 0 && indexBit < 32) {indexBit++;num >>= 1;}return indexBit;}
}    

剑指offer 数组中只出现一次的数字相关推荐

  1. [剑指offer] 数组中只出现一次的数字

    本文首发于我的个人博客:尾尾部落 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 法一:大家都能想到的HashMap法 法二:异或法 ...

  2. 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字

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

  3. 剑指offer:数组中重复的数字

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

  4. python剑指offer数组中出现次数超过一半的数字

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

  5. 剑指offer 数组中的逆序对

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

  6. 【排序】剑指offer:数组中重复的数字

    对数组进行排序,然后遍历判断,如果两个数相等,那么这两个数一定相邻 代码: class Solution { public:int duplicate(vector<int>& n ...

  7. 剑指offer 数组中的逆数对

    链接:https://www.nowcoder.com/profile/8740530/codeBookDetail?submissionId=9156674 来源:牛客网class Solution ...

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

    剑指offer--面试题40:数组中只出现一次的数字 Solution1: 书中展示了很棒的思路: 关于异或的两个性质应该知道: (1) X^X = 0; (2) X^0 = X; class Sol ...

  9. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字

    一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...

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

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

最新文章

  1. 打破重重阻碍,Flutter 和 Web 生态如何对接?
  2. 从程序员到项目经理(15):项目管理三大目标
  3. 《OOD启思录》—第2章2.6节角色与类
  4. oracle集,oracle(集合门类)
  5. linux输入子系统
  6. 最简单红米手机如何没root激活XPOSED框架
  7. saltstack 远程执行之返回写入到mysql
  8. avc水平什么意思_5个步骤切实有效地提高你的写作水平
  9. python学习笔记第六节(函数,装饰器)
  10. html给文字设置自己下载的字体
  11. 配置防火墙规则实现 WSL2 访问 Windows 主机服务
  12. THULAC 词性表
  13. php 虚线怎么画,photoshop中设置虚线样式的方法总结
  14. 硬盘文件系统系列专题之二 NTFS
  15. 彻底理解confidence interval和credible interval
  16. STM32CUBE+自平衡车实践篇3.4-STM32cueb配置编码器+车轮速度测量代码实现
  17. 电脑连不上网故障排查思路
  18. LCD1602液晶显示屏的入门级应用(一)
  19. USRP B210同步采集
  20. Nginx(docker安装)快速入门

热门文章

  1. 【数学建模】美赛特等奖提名经验总结
  2. Mac m1 max 工具安装及简介
  3. 【Java】Servlet原理
  4. 818释放规模效能,苏宁易购全场景智慧零售迈上新台阶
  5. 一文带你完全掌握机器人DH参数建模(详细步骤+实例+代码)
  6. 视频截帧 php,php截取视频指定帧为图片_PHP
  7. 计算机知识课程简单课件,计算机基础知识实用课件.ppt
  8. “7天”连锁酒店郑南雁
  9. 维纳滤波python 函数_Wiener维纳滤波基本原理及其算法实现
  10. fanuc机器人控制柜接线_工业机器人控制柜及使用方法