假设一个整型数组中,有9个元素。这些元素中,有4个数值是成对出现的(位置随机),有1个数值没有成对出现。
例如:{ 2, 5, 4, 5, 9, 2, 4, 8, 9 } 中,数值8仅出现了一次,而其他数值出现了2次。
请用文字描述一个算法,可以将符合此条件的数组中仅出现1次的数值找出来。
思路--循环判断统计元素在整个数组中出现的次数,出现的次数为1,赋给result,并结束循环。
#include <stdio.h>
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int result = 0;
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++) {
if (arr[j] == arr[i]) {
count++;
}
}
if (count == 1) {
result = arr[i];
break;
}
}
printf("只出现了一次的数值为:%d\\n", result);
return 0;
}
#include<stdio.h>
int main()
{
int i,j,k,a[6];
//输入
for(int i=0;i<6;i++){
scanf("%d",&a[i]);
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
k=(j-i)<0?j-i+6:j-i;
printf("%d ",a[k]);
}
printf("\n");
}
return 0;
}
可以用异或操作(XOR)来解决这个问题。因为两个相同元素异或后得到的结果是0,而任何数和0异或的结果都是其本身。
算法过程如下:
具体实现可以用Python代码表示如下:
def find_unique_number(arr):
unique_num = 0
for num in arr:
unique_num ^= num
return unique_num
其中,^表示异或操作符。该函数将返回仅出现1次的数值。