题目描述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明
你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?
样例
输入: [2,2,1]
输出: 1
输入: [4,1,2,1,2]
输出: 4
算法
(位运算) $O(n)$
- 两个相同的数字经过异或之后会变为 0。
- 将数组所有元素异或在一起即可得到出现 1 次的元素值。
时间复杂度
- 仅遍历一次数组,故时间复杂度为 $O(n)$。
空间复杂度
- 仅需要常数的额外空间。
C++ 代码
class Solution {
public:
int singleNumber(vector<int>& nums) {
for (int i = 1; i < nums.size(); i++)
nums[0] ^= nums[i];
return nums[0];
}
};
请问大佬写题解的这个字体是怎么调小的,就位运算 O(n) 下面的这些字体,为什么我的题解字这么大
可以去看下 markdown 语法
是调整字体尺寸的语法吗- -
font size=5我是尺寸/font
我搜的是这样 但是没用啊直接用
1.
或者*
来分点就行了xie xie!
这种比较巧妙的方法时间久了很快就忘了
我不用隔得久就会忘了😅
做过的题目隔很久就忘记了