题目
来自力扣
思路
先用快速排序法给数组排序,用变量i去遍历这个数组,若i位置的元素与他后一个不相同,则i位置的元素为单个元素,若相同,i移动两个元素位置,继续进行比较。当i遍历到最后一个元素,最后这个元素即为单个元素。
返回单个元素。
代码
class Solution {
public:
int singleNumber(vector<int>& nums) {
int i,m=nums[0];
int l=nums.size();
sort(nums.begin(),nums.end());//进行快速排序
for(i=0;i<l&&l>1;i=i+2)//每次后移两个位置
{
m=nums[i];
if(i==l-1) //遍历到最后一个元素,
return m;
if(m!=nums[i+1])//当前元素不等于后一个元素
return m;
}
return m;
}
};
结果
注意:
一开始采用双指针加更新数组的暴力法,浪费大量时间最后结果超出时间限制。