天天看點

一組資料中隻有一個數字出現了一次。其他所有數字都是成對出現的。

一組資料中隻有一個數字出現了一次。其他所有數字都是成對出現的。

請找出這個數字。(使用位運算)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	int arr[7] = { 1, 2, 3, 1, 2, 3, 4 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);//sz==7
	int ret = 0;
	for (i = 0; i < sz; i++)
	{
		ret = ret ^ arr[i];
	}
	printf("出現一次的數是:%d\n", ret); 
	system("pause");
	return 0;
}
           

什麼是按位異或運算?

符号 :^ 當位數的數值相同時取0,相異時取1.

例如:   0000 1101 1101

      0010 1100 1010

按位異或: 0010 0001 0111

總結:當一個0的二進制與成對的一個數異或會變為0

繼續閱讀