Problem: 137. 只出现一次的数字 II
思路
①排序后,前后不一样的就是答案
②map计数后找出值为1的数
复杂度
- 时间复杂度、空间复杂度:思路①较优
class Solution {
public:
int singleNumber(vector<int>& nums) {
int n=nums.size();
//排序后,前后不一样的就是答案
sort(nums.begin(),nums.end());
if(n==1)return nums[0];
if(nums[0]!=nums[1])return nums[0];
else if(nums[n-1]!=nums[n-2])return nums[n-1];
for(int i=1;i<n-1;i++){
if(nums[i]!=nums[i-1] && nums[i]!=nums[i+1]){
return nums[i];
}
}
return nums[0];
}
};
class Solution {
public:
int singleNumber(vector<int>& nums) {
int n=nums.size();
//map计数
map<int,int>ma;
for(int i=0;i<n;i++){
ma[nums[i]]++;
}
for(auto [x,val]:ma){
if(val==1)return x;
}
return 0;
}
};
标签:return,nums,int,复杂度,力扣,vector,137,size
From: https://blog.51cto.com/u_15974747/8665310