LeetCode之只出现一次的数字
只出现一次的数字
1.题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
1 | 输入: [2,2,1] |
示例 2:
1 | 输入: [4,1,2,1,2] |
2.分析
- 我个人第一时间想到的是先排序再遍历看哪个是单出来的 (时间复杂度太高了)
- 还有一种是使用hashmap计数然后判断
- 官方给出的解法 使用异或 (数组中各数异或 最后只会得到不相同的一个)
3.代码
- 解法1:
1 | class Solution { |
解法二(略)
解法三
1
2
3
4
5
6
7
8
9
10class Solution {
public int singleNumber(int[] nums) {
int ans = nums[0];
for (int i = 1; i < nums.length; i++) {
ans = ans ^ nums[i];
}
return ans;
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 goMars的学习随记!
评论