#include <iostream>#include <stdio.h>#include <vector>#include <string>using namespace std;/*问题:Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?分析:一个数组中,每个元素都出现了两次,只有一个元素不是。这明显是用异或来做的,根据b=a^a^b输入:31 1 2输出:2*/class Solution {public: int singleNumber(vector<int>& nums) { if(nums.empty()) { return 0; } int size = nums.size(); int result = 0; for(int i = 0 ; i < size ; i++) { result ^= nums.at(i); } return result; }};void PRint(vector<int>& result){ if(result.empty()) { cout << "no result" << endl; return; } int size = result.size(); for(int i = 0 ; i < size ; i++) { cout << result.at(i) << " " ; } cout << endl;}void process(){ vector<int> nums; int value; int num; Solution solution; vector<int> result; while(cin >> num ) { nums.clear(); for(int i = 0 ; i < num ; i++) { cin >> value; nums.push_back(value); } num = solution.singleNumber(nums); cout << num << endl; }}int main(int argc , char* argv[]){ process(); getchar(); return 0;}
新闻热点
疑难解答