题目描述:
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 };