【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
找出数组中只出现过一次的数,要求在线性时间内解决且不使用额外的内存
思路:
我们可以通过排序实现,只要这个位置的数与前一位还有后一位的数都不相等,那么这个数就是单一的
class Solution
{
public:
int singleNumber(vector<int>& nums)
{
int len = nums.size();
int i,j;
sort(nums.begin(),nums.end());
if(nums[0]!=nums[1])
return nums[0];
for(i = 1; i<len; i++)
{
if(nums[i]!=nums[i-1]&&nums[i]!=nums[i+1])
return nums[i];
}
return nums[len-1];
}
};