输入一个数组,其中每个元素都出现两次,只有一个元素出现一次,求这个只出现一次的元素,要求ON
第一种做法:用set<int> 保存元素,遍历数组,如果当前元素在set中存在则删除这个元素,否则插入这个元素,最后剩下的就是所求。空间ON
1 class Solution { 2 public: 3 int singleNumber(vector & nums) { 4 int len=nums.size(); 5 if(len==0) return -1; 6 if(len==1) return nums[0]; 7 set s; 8 for(int i=0;i
第二种做法:用位运算,异或,最后剩下的就是所求,时间ON,空间O1
1 class Solution { 2 public: 3 int singleNumber(vector & nums) { 4 int len=nums.size(); 5 if(len==0) return -1; 6 int ans=0; 7 for(int i=0;i