Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Sword To Offer 040 - 数组中只出现一次的数字

Sword To Offer 040 - 数组中只出现一次的数字

作者头像
Reck Zhang
发布于 2021-08-11 03:18:40
发布于 2021-08-11 03:18:40
33500
代码可运行
举报
文章被收录于专栏:Reck ZhangReck Zhang
运行总次数:0
代码可运行

数组中只出现一次的数字

Desicription

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

Solution

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    void FindNumsAppearOnce(const vector<int>& data, int* num1, int* num2) {
        int andNumber = 0;
        for(auto number : data) {
            andNumber ^= number;
        }
        int index = 0;
        while(andNumber ^ 1) {
            andNumber >>= 1;
            index++;
        }
        vector<int> partA;
        vector<int> partB;
        for(auto number : data) {
            if((number >> index) & 1) {
                partA.emplace_back(number);
            } else {
                partB.emplace_back(number);
            }
        }
        andNumber = 0;
        for(auto number : partA) {
            andNumber ^= number;
        }
        *num1 = andNumber;
        andNumber = 0;
        for(auto number : partB) {
            andNumber ^= number;
        }
        *num2 = andNumber;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指Offer-数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路 思路一: 利用HashSet的元素不能重复,如果有重复的元素,则删除重复元素,如果没有则添加,最后剩下的就是只出现一次的元素 思路二: 用HashMap保存数组的值,key为数组值,value为布尔型表示是否有重复 思路三: 两个不相等的元素在位级表示上必定会有一位存在不同。 将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 diff &= -diff 得到出 diff 最右侧不为
武培轩
2018/04/18
8130
剑指offer 数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
vincentbbli
2021/08/18
3650
【剑指Offer】56.1 数组中只出现一次的数字,其他出现2次
两个不相等的元素在位级表示上必定会有一位存在不同,将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。
瑞新
2020/12/07
3350
【剑指offer】数组中只出现过一次的数字
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
3360
每天一道剑指offer-数组中只出现一次的数字
考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:”乔戈里峰”
乔戈里
2019/01/23
3880
剑指40-数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
opencode
2022/12/26
3010
C++版 - 剑指Offer 面试题40:数组中只出现一次的两个数 题解
面试题40:数组中只出现一次的两个数 提交网址:  http://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=13&
Enjoy233
2019/03/05
1.1K0
[剑指offer] 数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
尾尾部落
2018/09/04
9570
剑指offer——数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
AI那点小事
2020/04/18
5770
剑指Offer(四十)-- 数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
秦怀杂货店
2022/02/15
3340
剑指offer No.40 数组中只出现一次的数字
https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=13&tqId=11193&tPage=2&rp=2&r
week
2020/04/27
3240
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
终有救赎
2023/10/16
2050
每日一题《剑指offer》数组篇之数组中只出现一次的两个数字
剑指Offer的学习笔记(C#篇)-- 数组中只出现一次的数字
例如:给定的数组是这个:int[] z = new int[8] {2,4,3,6,3,2,5,5 }; 因为2/3/5都有两个,所以输出的是num1[0]=4; num2[0]=6。。
WeiMLing
2019/08/23
4950
剑指Offer的学习笔记(C#篇)-- 数组中只出现一次的数字
异或的应用 及剑指offer 面试 40 数组中只出现一次的数字
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27568975
bear_fish
2018/09/20
1.4K0
数组中只出现一次的数字----异或的运用
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
名字是乱打的
2022/05/13
4500
java 算法题 - 面试中常见的位操作算法题
上一篇博客 聊一聊 Android 中巧妙的位操作 中,我们讲解了 java 中常用的位运算及常用应用场景,今天,让我们一起来看一下,面试中常见的位操作的算法题。
程序员徐公
2018/12/28
7440
Sword To Offer 035 - 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
Reck Zhang
2021/08/11
3470
找出只出现一次的数字---合集
/** * 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字 * @param array * @param num1 * @param num2 */ public static void findNumsAppearOnce(int [] array,int num1[] , int num2[]) { if(array == null || array.length <= 1){ n
名字是乱打的
2022/05/13
3520
剑指offer(31-40题)题解
思路: 最笨的方法(可过)。使用字符串,将从1道n的字符串拼凑成新的字符串,然后遍历查找1就可以了。至于数学方法的话当初想了一会感觉考虑点挺多,后面还会再想想。
bigsai
2020/02/19
3600
剑指offer 第十天
37.数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。 采用二分查找法 /* 方法一:时间复杂度O(n),不可选 */ public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length == 0) return 0; int count = 0; for(int i = 0 ; i < array.length ; i++)
10JQKA
2018/05/09
5770
推荐阅读
相关推荐
剑指Offer-数组中只出现一次的数字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档