方法1 直接解算 时间O(n2)
int singleNumber(int* nums, int numsSize) {
int i = 0;
int j = 0;
for (i = 0; i < numsSize; i++){
for (j = 0; j < numsSize; j++){
if ((i != j) && (nums[i]== nums[j])){
break;
}
}
if(j == numsSize){
return nums[i];
}
}
return 0;
}
方法二 亦或法 时间O(n),题目标明重复元素是出现两次,所以temp会对某一个数亦或两次,按位亦或,相同为0 不同为1,两次亦或则为0,所以会0亦或单独的数,为那个数
int singleNumber(int* nums, int numsSize) {
int temp = nums[0];
if (numsSize <= 1) {
return nums[0];
}
for (int i = 1; i < numsSize; i++) {
temp ^= nums[i];
}
return temp;
}