查找数组中只出现一次的元素
2015-09-27 01:14
447 查看
问题:已知一个特殊数组,数组中除去一个元素只出现一次之外,其他元素都出现了两次,现在要找出这个唯一一个只出现了一次的数据元素,并将其打印出来。
分析:利用异或运算的特殊性。例如A异或B得到C,C再与B异或则又会得到A,那么依照这个规律,将整个数组逐个元素异或,最后得到的结果既是该数组中仅出现了一次的元素。
以已知data[]数组为例:
分析:利用异或运算的特殊性。例如A异或B得到C,C再与B异或则又会得到A,那么依照这个规律,将整个数组逐个元素异或,最后得到的结果既是该数组中仅出现了一次的元素。
以已知data[]数组为例:
#include <iostream> using namespace std; int data[20] = {1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 8}; int FindNumber(int data[],int length) { if(length <2) return -1; int opXor = 0, i = 0; while(i <length) opXor ^= data[i++]; return opXor; } int main() { int result = FindNumber(data, 20); cout << result; return 0; }
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- Lua和C语言的交互详解
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- Ruby简明教程之数组和Hash介绍
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解