难度中等
给你一个整数数组 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
中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
排序遍历
c++
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
if(nums.size()==1) return nums[0];
for (int i=0;i<nums.size();i++)
{
if (i==0)
{
if (nums[i]!=nums[i+1]) return nums[i];
}
else if (i==nums.size()-1)
{
if (nums[i-1]!=nums[i]) return nums[i];
}
else{
if (nums[i-1]!=nums[i] && nums[i+1]!=nums[i]) return nums[i];
}
}
return 0;
}
};
python
class Solution:
def singleNumber(self, nums: List[int]) -> int:
nums.sort()
if len(nums)==1:
return nums[0]
for i in range(len(nums)):
if i==0:
if nums[i]!=nums[i+1]:
return nums[i]
elif i==len(nums)-1 :
if nums[i]!=nums[i-1]:
return nums[i]
else:
if nums[i]!=nums[i-1] and nums[i]!=nums[i+1]:
return nums[i]
return 0