题目描述【Leetcode】
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?
这道题是找指现了一次的数,我的方法有两种
方法一:先排序,然后再一个一个找,这个运行时间比较长
class Solution {
public:
int singleNumber(vector<int>& nums) {
int n = nums.size();
if(n == 0) return 0;
if(n == 1) return nums[0];
if(n == 2) return 0;
sort(nums.begin(),nums.end());
int temp = nums[0];
for(int i = 0; i < n; i += 2 ){
if(i == n-1) return nums[i];
if(nums[i] != nums[i+1]) return nums[i];
}
}
};
方法二:用异或来做,简单粗暴运行快
class Solution {
public:
int singleNumber(vector<int>& nums) {
int re = nums[0];
for(int i = 1; i < nums.size() ; i++){
re ^= nums[i];
}
return re;
}
};
本文介绍两种高效算法来找出数组中仅出现一次的元素:一种通过排序后查找,另一种使用异或操作实现更快速度且不占用额外内存。
692

被折叠的 条评论
为什么被折叠?



