#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?分析:一個數(shù)組中,每個元素都出現(xiàn)了兩次,只有一個元素不是。這明顯是用異或來做的,根據(jù)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;}
新聞熱點
疑難解答