C语言:一个数组中只有两个数字是出现一次
生活随笔
收集整理的這篇文章主要介紹了
C语言:一个数组中只有两个数字是出现一次
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 //1.一個數(shù)組中只有兩個數(shù)字是出現(xiàn)一次,
2 //其他所有數(shù)字都出現(xiàn)了兩次。
3 //找出這兩個數(shù)字,編程實現(xiàn)。a
4
5 //^=單獨兩個數(shù)的^結果
6 //單獨出現(xiàn)的兩個數(shù)不同位的標記
7 //position: ^結果中第一個出現(xiàn)1的位置
8 //position位兩個數(shù)肯定有一個為0 ,一個為1
9 //把數(shù)組分成兩部分
10 //1:position為1
11 //2:position為0
12 //每一部分都有一個只出現(xiàn)一次的數(shù)字,其他的都是成對出現(xiàn)
13 //每一部分^結果為單獨出現(xiàn)的數(shù)字
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 //把數(shù)組分成兩部分
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 }
?
轉載于:https://www.cnblogs.com/Duikerdd/p/9940819.html
總結
以上是生活随笔為你收集整理的C语言:一个数组中只有两个数字是出现一次的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用python把图片转换成代码
- 下一篇: int i=i++;和i=++i;和i+