每日一算法之只出现一次的数字
题目大意:给你一个非空整数数组,除了某个元素只出现一次以外,其余元素均出现两次,找到那个只出现一次的元素
我的第一想法是使用哈希表来录入数组元素次数,通过遍历完数组找到哈希表里面不重复的数值就是所求的结果,但是看了leetcode的最佳解法是通过数组数值进行异或运算来达到解题思路.
解法如下:
感觉豁然开朗,我是感觉这种解题思路会节省时间和空间.
代码如下:
class Solution {
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
}
时间复杂度为O(n)
空间复杂度为O(1)