int singleNumber(vector<int>& nums){
for(int i=0;i<nums.size()-1;i++){
nums[i+1]=nums[i]^nums[i+1];
}
return nums[nums.size()-1];
}
int array[]={1,1,2,2,3,5,5};
size_t count= sizeof(array)/sizeof(int);
vector<int> vec(array,array+count);
cout<<so.singleNumber(vec)<<endl;
相同数异或为0,不同数异或为1,所以很容易找到数组中只出现一次的数。
int普遍是32位,而size_t在主流平台中都是64位。
类型名称非常直观,它的含义就是“size type”,大小的类型,也直接意味着它是sizeof运算符结果的类型。使用的时候把它当做其它的,比如,某种计数变量的类型是没有意义的,也是错误的。它唯一正确的用途就是“代表某块内存的大小”等等类似的用途,这显然很容易想到是无符号的。比如:void* malloc(size_t),这里显然参数意味着“某块内存的大小”
size_t详细介绍
网友评论