leetcode 136. 只出现一次的数字
2019-03-21 23:52
519 查看
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
自己的想法是利用python的内置函数。。。有点作弊的感觉
class Solution: def singleNumber(self, nums: List[int]) -> int: result = [] for i in nums: if i in result: result.remove(i) else: result.append(i) return result[-1]
后来看了大佬才知道什么才是真牛逼啊 用异或的思想,因为异或满足结合律 真是一波天秀操作
交换律:a ^ b ^ c <=> a ^ c ^ b
任何数于0异或为任何数 0 ^ n => n
相同的数异或为0: n ^ n => 0
var a = [2,3,2,4,4]
2 ^ 3 ^ 2 ^ 4 ^ 4等价于 2 ^ 2 ^ 4 ^ 4 ^ 3 => 0 ^ 0 ^3 => 3
所以直接遍历然后异或。。。 时间复杂度O(n**2) 学到了。。。
class Solution: def singleNumber(self, nums: List[int]) -> int: a = 0 for i in nums: a = a ^ i return a
相关文章推荐
- LeetCode - 136. 只出现一次的数字
- LeetCode 136 Single Number(仅仅出现一次的数字)
- Leetcode136. 只出现一次的数字
- 【136.只出现一次的数字】 LeetCode
- leetcode解题之136 #Single Number Java版(只出现一次的数字)
- Leetcode刷题24-136.只出现一次的数字(C++)
- leetcode之136 只出现一次的数字
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- leetcode136 只出现一次的数字
- Java&LeetCode 初入门——136. 只出现一次的数字
- LeetCode 136.只出现一次的数字(python)
- leetcode - 136 - 只出现一次的数字
- LeetCode 136 Single Number 出现一次的数字
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(仅仅出现一次的数字)】
- leetcode 136. 只出现一次的数字
- LeetCode 136 Single Number(数组中只出现一次的数字)
- Leetcode 136 Single Number 仅出现一次的数字
- Leetcode 136 只出现一次的数字
- 【leetcode】数组中找出只出现一次的数字(Single Number)
- 力扣136题(只出现一次的数字)(位运算)