LeetCode-只出現一次的數字

幾天沒有刷題,手又癢癢了,於是打開力扣做了只出現一次的數字這道題。下面是解題方法:
1.快速排序解法

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int i,cur;
        int len=nums.size();

        sort(nums.begin(),nums.end());//進行快速排序,得到例如1,1,3,3,2

        for(i=0;i<len;i=i+2)//每次後移兩個位置
        {
            cur=nums[i];
            if(i==len-1)  //如果遍歷到最後一個元素,說明該元素爲single number
            return cur;
           if(cur!=nums[i+1])//如果當前元素不等於後一個元素即爲single number
              return cur;
           
        }
        return -1;
    }
};

2.異或解法(所有數字進行異或,相同的數字符號位一樣,所以異或爲000,最終結果就只爲single number的符號位)

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int len=nums.size();
        int ans=nums[0];

       for(int i=0;i<len-1;i++)
           ans=ans^nums[i+1];//異或運算,相同的符號位結果爲0,不同爲1,最後留下來的數字就是single number
  
        return ans;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章