《剑指offer》-数组中只出现一次的数字
/*
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:
如果是只有一个数字出现一次,那么所有数字做异或就得到结果;
现在有两个数字x,y分别出现一次,其他数字出现两次,那么所有数字异或的结果是result = x^y
x^y肯定不等于0,那么找其二进制表示中不等于0的一个位,比如从右到左第一个位置好了,那么用这个位置能区分开来这两个数字,以及其他的数字,每两个一样的数字都处于同一边。
*/
class Solution {
public:void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) {int res = data[0];for (int i = 1; i < data.size(); i++){res = res ^ data[i];}int cnt = 0;while (res % 2 != 1){res = res >> 1;cnt = cnt + 1;}*num1 = *num2 = 0;for (int i = 0; i < data.size(); i++){if ((data[i] >> cnt) & 1){*num1 ^= data[i];}else{*num2 ^= data[i];}}}
};
《剑指offer》-数组中只出现一次的数字相关推荐
- [剑指offer] 数组中只出现一次的数字
本文首发于我的个人博客:尾尾部落 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. 解题思路 法一:大家都能想到的HashMap法 法二:异或法 ...
- 8. 返回数组里出现次数最多的数字_剑指offer 数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer:数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- python剑指offer数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 剑指offer 数组中的逆序对
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...
- 【排序】剑指offer:数组中重复的数字
对数组进行排序,然后遍历判断,如果两个数相等,那么这两个数一定相邻 代码: class Solution { public:int duplicate(vector<int>& n ...
- 剑指offer 数组中的逆数对
链接:https://www.nowcoder.com/profile/8740530/codeBookDetail?submissionId=9156674 来源:牛客网class Solution ...
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
剑指offer--面试题40:数组中只出现一次的数字 Solution1: 书中展示了很棒的思路: 关于异或的两个性质应该知道: (1) X^X = 0; (2) X^0 = X; class Sol ...
- 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...
- 【剑指offer-Java版】40数组中只出现一次的数字
数组中只出现一次的数字:输入一个数组,该数组中有两个数字只出现了一次,其他数字都出现了两次,求出这两个只出现了一次的数字 要求时间复杂度为O(n)空间复杂度为O(1) 考虑一个数组中只有一个数字仅仅出 ...
最新文章
- 无线网卡实现AP 热点功能,共享Internet连接设置
- 《Java EE核心框架实战》—— 2.3 resultMap 标签
- U-BOOT之一:BootLoader 的概念与功能
- Python 之 线程
- 栈的应用--中序表达式转后序表达式
- vim 删除当前词_vim 可视话模式(即删除一列和多列)
- Leetcode每日一题:328.odd-even-linked-list(奇偶链表)
- JavaScript中的数组 1
- CAD中 OLE不能旋转_AutoCAD小秘密042:光栅图像和OLE图像,究竟如何选择
- android字体右对齐,Android TextView将文本右对齐和左对齐
- 判断一个字符数据是否是数字字符
- 哈罗单车打不开锁,显示:“可能卡住了 重新开锁”
- LaTeX 图片加标题 文本分栏自动换行
- 用计算机弹有点甜乐谱,《汪苏泷 - 有点甜,钢琴谱》汪苏泷(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
- 关于“产品驱动”和“技术驱动”
- 大学生必学练习题 - Java 语言经典50例
- Unity3D-VR手柄控制器的实现
- 新品速看丨创新微MinewSemi正式推出GNSS高精度卫星定位导航模块
- Golang GMP调度模型
- 泛微协同管理应用平台e-cology怎么样?