我是靠谱客的博主 留胡子毛衣,最近开发中收集的这篇文章主要介绍每日一题-----数组中数字出现的次数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字?
    全员异或,考虑异或操作的性质:对于两个操作数的每一位,相同结果为 0,不同结果为 1。那么在计算过程中,成对出现的数字的所有位会两两抵消为 00,最终得到的结果就是那个出现了一次的数字。
    2. 两个数字只出现一次
class Solution {
public:
vector<int> singleNumbers(vector<int>& nums) {
int ret = 0;
for (int n : nums)
ret ^= n;
int div = 1;
while ((div & ret) == 0)
div <<= 1;
int a = 0, b = 0;
for (int n : nums)
if (div & n)
a ^= n;
else
b ^= n;
return vector<int>{a, b};
}
};

最后

以上就是留胡子毛衣为你收集整理的每日一题-----数组中数字出现的次数的全部内容,希望文章能够帮你解决每日一题-----数组中数字出现的次数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部