给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
示例 1:
输入:nums = [2,2,3,2]
输出:3
示例 2:
输入:nums = [0,1,0,1,0,1,99]
输出:99
提示:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-number-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析:我的思路很简单,先排序,然后探测左右两边有相同则排除,对开头和最后做一下判断,还有注意输入为1个字符的时候。
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n = nums.size();
if(n==1)
return nums[n-1];
if(nums[0]!=nums[1])
return nums[0];
for(int i=1;i<n-1;i++)
{
if(nums[i]==nums[i-1] || nums[i]==nums[i+1])
continue;
return nums[i];
}
return nums[n-1];
}
};