leetcode 136. Single Number
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
1 class Solution { 2 public: 3 int singleNumber(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 if(nums.size()==1) 6 { 7 return nums[0]; 8 } 9 else if (nums[0]!=nums[1]) 10 { 11 return nums[0]; 12 } 13 else 14 { 15 16 for(int i = 1;i < nums.size()-1;i++) 17 { 18 if((nums[i]!=nums[i-1])&&(nums[i]!=nums[i+1])) 19 { 20 return nums[i]; 21 } 22 } 23 return nums[nums.size()-1]; 24 } 25 } 26 };
注意:1.寻找序列内单个的数。
2.我的方法(线性时间复杂度,不利用其他空间):
先sort一遍排列,和前后两个数都不相等的就是所求,序列长度为1为边界条件
3.快速方法:!!!所有数按位异或即为结果(因为异或满足结合律!!!)