📜  门| GATE-CS-2014-(Set-3) |第 62 题(1)

📅  最后修改于: 2023-12-03 15:42:17.419000             🧑  作者: Mango

题目描述

在一个长度为n的数组A中有多个整数出现了奇数次,只有一个整数出现了偶数次,现在需要找出这个只出现偶数次的整数。

编写一个函数int find_even_occuring_number(int A[], int n)实现上述功能,其中:

  • A为长度为n的整型数组,数组下标从0开始
  • n为数组长度,满足$1 \leq n \leq 10^4$

函数应该返回出现偶数次的整数。

示例

输入:

A = [1, 1, 2, 3, 3, 4, 4, 5, 5]
n = 9

输出:

2

输入:

A=[1, 1, 2, 2, 3, 3, 4, 4]
n=8

输出:

0
解题思路

题目要求我们找出只出现偶数次的整数,我们可以想到利用异或运算的性质来解决问题。

  • 异或运算有一个重要的性质,即两个相同数值的变量进行异或运算,结果为0。
  • 因为只有一个整数出现偶数次,其它整数均出现奇数次,因此对数组中的所有数进行异或运算,最终的结果一定是只出现偶数次的整数。

在函数中,我们遍历A数组,对所有的数进行异或运算,最后返回结果即可。

解题代码
int find_even_occuring_number(int A[], int n) {
	int result = 0;
	for (int i=0; i<n; i++) {
		result ^= A[i];
	}
	return result;
}

返回的代码片段如下所示:

```c++
int find_even_occuring_number(int A[], int n) {
	int result = 0;
	for (int i=0; i<n; i++) {
		result ^= A[i];
	}
	return result;
}