小细节
数组中只出现一次的两个数字
http://www.nowcoder.com/questionTerminal/389fc1c3d3be4479a154f63f495abff8
int yes=1;
后面,再yes^=1;就能很好的解决代码细节设计
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int> FindNumsAppearOnce(vector<int>& array) { // write code here int len=array.size(); if( 0==len || 1==len ) { return array; } if( 2==len ) { if( array[0]!=array[1] ) { return array; } else { vector<int> ret; ret.push_back( array[0] ); return ret; } } int temp=array[0]^array[1]; for(int i=2; i<len; ++i) { temp^=array[i]; } int num=1; while( 1 ) { if( num&temp ) { break; } num<<=1; } int yes=1,no=1; for(int i=0; i<len; ++i) { if( num&array[i] ) { yes^=array[i]; } else { no^=array[i]; } } yes^=1; no^=1; vector<int> ret; ret.push_back( yes ); ret.push_back( no ); if( yes>no ) { reverse( ret.begin(), ret.end() ); } return ret; } };