题目地址:
https://leetcode.com/problems/single-number/submissions/
给定一个数组,除了某个数只出现了一次之外,每一个数都出现了两次。求那个只出现了一次的数。注意到32位整数与亦或运算构成了一个阿贝尔群,每个元素的阶是2,参考https://blog.csdn.net/qq_46105170/article/details/104082406,该群的单位元是0。所以直接从头到尾亦或一遍即可。
public class Solution {
public int singleNumber(int[] nums) {
int cur = 0;
for (int i = 0; i < nums.length; i++) {
cur ^= nums[i];
}
return cur;
}
}
时间O(n),空间O(1)。
edWard的算法世界 发布了93 篇原创文章 · 获赞 0 · 访问量 1575 私信 关注