2022年02月14日 力扣每日一题
题目
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例 1:
输入: nums = [1,1,2,3,3,4,4,8,8] 输出: 2
示例 2:
输入: nums = [3,3,7,7,10,11,11] 输出: 10
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
进阶: 采用的方案可以在 O(log n)
时间复杂度和 O(1)
空间复杂度中运行吗?
Related Topics
个人解法
根据异或的规则,相同为0,不同为1,这样把所有数都异或一遍,结果就是唯一的只出现一次的数
{% tabs categories%}
public int singleNonDuplicate(int[] nums) {
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
result ^= nums[i];
}
return result;
}
import operator
from functools import reduce
from typing import List
class Solution:
def singleNonDuplicate(self, nums: List[int]) -> int:
return reduce(operator.xor, nums)
{% endtabs %}