输入一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
int singleNumber(int* nums, int numsSize) {
int a[15000]; // 存放只出现一次的数的数组
int i = 0, j = 0, k = 0, l = 0;
for (i = 0; i < numsSize; i++) {
printf("添加%d", nums[i]);
a[j] = nums[i]; // 添加
// 判断是否重复
for (k = 0; k < j; k++) {
if (a[k] == a[j]) {
// 删掉前一个
printf("删除%d", nums[i]);
for (l = k; l < j; l++) {
a[l] = a[l + 1];
}
j -= 2;
break;
}
}
j++;
}
return a[0];
}
j-=2不仅去掉新增的a[j],还要集体前移1位,所以索引迁移2位