📌  相关文章
📜  C C++程序查找出现的奇数次(1)

📅  最后修改于: 2023-12-03 14:59:36.455000             🧑  作者: Mango

C/C++程序查找出现的奇数次

在一个给定的整数数组中,找出出现了奇数次的元素。

思路

使用异或的性质,相同的数异或得0,不同的数异或得非0值,将整个数组异或起来,最终得到的就是只出现了奇数次的数的异或结果。

如数组中有 5 3 4 5 4,5和3异或结果为6,然后和4异或结果为2,再和5异或结果为7,最后和4异或结果为3,所以只出现了奇数次的数的异或结果就是3。

代码实现
C语言
#include <stdio.h>

int findOddOccurrence(int arr[], int n) {
    int i, res = 0;
    for (i = 0; i < n; i++)
        res ^= arr[i];
    return res;
}

int main() {
    int arr[] = {1, 2, 3, 2, 3, 1, 3};
    int n = sizeof(arr)/sizeof(arr[0]);
    printf("The element with odd occurrence is %d", findOddOccurrence(arr, n));
    return 0;
}
C++语言
#include <iostream>
using namespace std;

int findOddOccurrence(int arr[], int n) {
    int i, res = 0;
    for (i = 0; i < n; i++)
        res ^= arr[i];
    return res;
}

int main() {
    int arr[] = {1, 2, 3, 2, 3, 1, 3};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "The element with odd occurrence is " << findOddOccurrence(arr, n);
    return 0;
}
总结

本篇文章介绍了在C/C++语言中查找出现了奇数次的元素的方法。使用异或运算,能够高效地解决这个问题。