剑指 Offer 56 - II. 数组中数字出现的次数 II
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
int Binary_decimal(int *p, int len)//二进制转化为十进制
{
int ret = 0;
for(int i = 0; i<len ;++i)
{
if(p[i]%3==1)
ret += pow(2,i);
}
return ret;
}
int singleNumber(int* nums, int numsSize){
int arr[32]={0};
int i = 0;
for(i=0;i<numsSize;++i)//将位数模3等于1的按位寄存到数组当中
{
int j = 0;
unsigned int dex = 1;
for(;j<32;++j)
{
if(nums[i] & dex)
{
arr[j] +=1;
}
dex<<= 1;
}
}
return Binary_decimal(arr,32);
}
此题可推广到其他数字出现n次,均可用此解法求解~。