数字出现的次数

Posted shuangcao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字出现的次数相关的知识,希望对你有一定的参考价值。

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路
相同异或为0,相异异或为0,有两个出现一次,其他出现两次,想办法将这两个只出现一次的两个数分到不同的数组中。因为两个只出现1个,所以总体异或必不为0,从右往左,找第一个1的索引。根据这个索引把这个索引上是1的归为一组,其他的归为一组。
代码实现
 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def FindNumsAppearOnce(self, array):
 4         # write code here
 5         if not array or len(array) < 2:
 6             return 0
 7         temp = 0
 8         res1 = 0
 9         res2 = 0
10         for i in array:
11             temp = temp ^ i
12         # temp中1在的索引
13         indexof1 = self.findIndex1(temp)
14         for j in array:
15             if self.is1(j,indexof1):
16                 res1=res1^j
17             else:
18                 res2 = res2^j
19         return res1,res2
20 
21     def findIndex1(self,num):
22       23         n = 0
24         while num &1==0:
25             num = num>>1
26             n +=1
27         return n
28     def is1(self,num,index1):
29         if (num>>index1)&1:
30             return True
31         else:
32             return False

 

以上是关于数字出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

编程算法 - 数组中出现次数超过一半的数字 代码(C)

如何计算bash中一列数据中的连续重复次数?

数组中数字出现的次数

数组中数字出现的次数

数组中数字出现的次数

《剑指Offer——数字在排序数组中出现的次数》代码