给定一个非空整形数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出那个只出现了一次的元素
#include <stdio.h>
int main() {
//定义一个数组
int arr[] = { 1,2,3,4,5,1,2,3,4 };
//计算数组的长度
int sz = sizeof(arr) / (sizeof(arr[0]));
int i;
//遍历数组,然后每个元素与其他元素进行比较
for (i = 0; i < sz; i++) {
int j;
int count = 0;//计数器
for (j = 0; j < sz; j++) {
if (arr[i] == arr[j]) {
count++;
}
}
if (count == 1) {
printf("出现一次的数据为:%d", arr[i]);
break;
}
}
return 0;
}
简单算法(利用异或)
#include <stdio.h>
int main() {
int arr[] = { 1,2,3,4,5,1,2,3,4 };
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组的长度
int i = 0;
int ret = 0;
for (i = 0; i < sz; i++) {
ret = ret ^ arr[i];
}
printf("出现一次的数据为:%d", ret);
return 0;
}