C语言:一个数组中只有两个数字是出现一次

Posted Duikerdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:一个数组中只有两个数字是出现一次相关的知识,希望对你有一定的参考价值。

 1 //1.一个数组中只有两个数字是出现一次,
 2 //其他所有数字都出现了两次。
 3 //找出这两个数字,编程实现。a
 4 
 5 //^=单独两个数的^结果
 6 //单独出现的两个数不同位的标记
 7 //position:   ^结果中第一个出现1的位置
 8 //position位两个数肯定有一个为0 ,一个为1
 9 //把数组分成两部分
10 //1:position为1
11 //2:position为0
12 //每一部分都有一个只出现一次的数字,其他的都是成对出现
13 //每一部分^结果为单独出现的数字
14 #include<stdio.h>
15 #include<stdlib.h>
16 
17 int main()
18 {
19     int arr[] = { 1, 3, 4, 5, 6, 6, 5, 1 };
20     int len = sizeof(arr) / sizeof(arr[0]);
21     int ret = 0;
22     int i = 0;
23     int pos = 0;
24     int x = 0;
25     int y = 0;
26     //整体^一次
27     for (i = 0; i < len; i++)
28     {
29         ret ^= arr[i];
30     }
31     //寻找第一个1的位置
32     for (i = 0; i < 32; i++)
33     {
34         if ((ret >> i) & 1 == 1)
35         {
36             pos = i;
37             break;
38         }
39     }
40     //把数组分成两部分
41     for (i = 0; i < len; i++)
42     {
43         //如果pos位置为1
44         if (((arr[i] >> pos)&1)==1)
45         {
46             x ^= arr[i];
47         }
48         //位置为0
49         else
50         {
51             y ^= arr[i];
52         }
53     }
54     printf("%d %d", x, y);
55     system("pause");
56     return 0;
57 }

 

以上是关于C语言:一个数组中只有两个数字是出现一次的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程 找出数列中只出现一次的两个数

数组中只出现一次的数字

数组中数字出现的次数

一个数组中只有两个数字出现一次其他数字出现两次,找到这个数字

求一个数组中只有一个和两个数字出现了一次,其余成对出现

一组数组中只有一个数(两个数)出现一次,其他的都成对出现,找出该数