leetcode-136:只出现一次的数字

简介: leetcode-136:只出现一次的数字

题目

题目链接

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

解题:

方法一:位运算

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        return reduce(lambda x, y: x ^ y, nums)

关于reduce函数的链接

输入nums = [4,1,2,1,2],可得到结果4,巧妙的利用了位与运算。

方法二:(利用集合) 虽然复杂度有点高,不符合题意,但是容易想到

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        num1 = sum(list(set(nums)))*2
        num2 = sum(nums)
        return num1-num2

没有时间复杂度限制的其他方法可以自己尝试一下。

相关文章
【力扣每日一题】1365. 有多少小于当前数字的数字
【力扣每日一题】1365. 有多少小于当前数字的数字
|
1月前
|
算法
Leetcode(只出现一次的数字)
这篇文章介绍了如何使用位异或运算法则解决LeetCode上的一个编程问题,即在数组中找出只出现一次的数字,而其他数字都出现两次。
13 0
|
6月前
|
算法
【力扣】136. 只出现一次的数字
【力扣】136. 只出现一次的数字
|
6月前
leetcode:476. 数字的补数
leetcode:476. 数字的补数
109 0
|
6月前
|
算法
leetcode-260:只出现一次的数字 III
leetcode-260:只出现一次的数字 III
38 0
|
算法 Java C语言
leetcode之只出现一次的数字
今天为大家分享的是关于在数组中找到只出现一次数字的系列题目,我将使用c跟Java来实现,希望我的分享能够帮助到大家。
|
存储
剑指offer 63. 和为S的两个数字
剑指offer 63. 和为S的两个数字
77 0
|
机器学习/深度学习 算法
【LeetCode】只出现一次的数字
【LeetCode】只出现一次的数字
【LeetCode】只出现一次的数字
|
Python
LeetCode 476. 数字的补数
给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。
97 0
|
Python
LeetCode 1323. 6 和 9 组成的最大数字
给你一个仅由数字 6 和 9 组成的正整数 num。
102 0