题目描述:

Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

解题思路:

这题还是用136也就是上一题的思路,异或两次就会变为0,这次的数组中的重复元素变为3个,所以要跳过一个不要异或。因此,先进行排序,再检测是否是第三个重复。

代码:

 1 class Solution {
 2 public:
 3     int singleNumber(vector<int>& nums) {
 4         int n = nums.size();
 5         if(n==1)
 6             return nums[0];
 7         sort(nums.begin(), nums.end());  //排序
 8         int ret = nums[0]^nums[1];
 9         for(int i = 2; i < n; i++){
10             if(nums[i]==nums[i-2])
11             //是否第三个重复
12                 continue;
13             ret ^= nums[i];
14         }
15         return ret;
16     }
17 };

 

 

 

posted on 2018-03-30 23:38  宵夜在哪  阅读(102)  评论(0)    收藏  举报