在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。
例如:
数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,其他数字都出现2次,找出5
以下算法涉及桶排序
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define N 9 //宏定义,方便更换数组大小
int main()
{
int a[N] = { 1,2,3,4,5,1,2,3,4, };
int k = 0;
int b[N] = { 0 }; //b数组用来存放下标信息,全部初始化为0
for (int i = 0; i < N-1; i++) //循环来判断是否有两个数的一样的
{
for (int j = i+1; j <= N-1; j++)
{
if (a[i] == a[j]) //如果有2个数一样,则锁定这两个数的下标
{
b[i] ++; //b数组存放的这个下标加加,变为1
b[j] ++; //和上面一样,这两个一样的数的下标在b数组中对应的
//位置都加加
break; //因为是找单身狗,如果找到了一对,没必要继续找第三
//个和这2个数一样的了
}
}
}
for (int i = 0; i < N; i++) //让下标数据为0的(即没有配对一样数的)输出即为单
//身狗
{
if (b[i] == 0)
{
printf("%d ", a[i]);
}
}