数组中除一个数字外.其余数字均出现三次
一,思路

此时当前时间复杂度位O(N),空间复杂度为O(1)
二,具体代码
#include<stdio.h> int singleNumber(int* nums, int numsSize) { int result=0; for(int i=0;i<32;i++)//遍历32位 { int temp=0; for(int j=0;j<numsSize;j++) //对每个数据进行位操作统计得到它的每一位出现的次数 { temp+=(nums[j]>>i)&1; } if(temp%3) //如果%3!=0,通过移位得到结果 { result+=1<<i; } } return result; } int main() { int nums[]={1,2,2,2,3,3,3}; int numsSize=sizeof(nums)/sizeof(nums[0]); int ret=singleNumber(nums,numsSize); printf("%d",ret); return 0; }
本文来自博客园,作者:ETTA-7,转载请注明原文链接:https://www.cnblogs.com/etta-7/

浙公网安备 33010602011771号