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;
}
}; 
京公网安备 11010502036488号