アルゴリズム課は十七週間Single Numberです.

1678 ワード

Gven an array of integers,everelement apears twice except for one.Find that single one.
Note:Your algorithm shout have a linea runtime compplexity.>Could you implement it without using extra memory?整数配列を指定します.中の数字は1つだけ1回、他は2回です.この例外の整数を探してください.アルゴリズムの時間複雑さは線形であり,余分なメモリを使用する必要がないはずである.
問題解決の考え:先に並べ替えて、並べ替えの実現は早い列で、時間の複雑さは要求に合います.並べ替え後、偶数の数桁と奇数の桁が同じかどうかを比較します.違いがあれば戻ります.最後の桁なら、返します.一サイクル、線形時間は要求に適合します.
class Solution {  
public:  
    int singleNumber(vector<int>& nums) {  
       sort(nums.begin(), nums.end());  

       for(int i = 0; i < nums.size(); i = i+2)  
       {  
            if(i%2==0)  
            {  
                if(nums[i]!=nums[i+1])  
                {  
                    return nums[i];  
                }  
            }  
            else  
            {  
                if(i == nums.size()-1)  
                {  
                    return nums[i];  
                }  
            }  
       }  
    }  
};