python [LeetCode] 只出现一次的数字
2019-03-08 15:57
369 查看
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例2:
输入: [4,1,2,1,2]
输出: 4
思路
这个方法需要额外的空间。先生成一个空字典,然后遍历数组中的每个元素,如果元素不在字典中,则添加该元素,并使value值为1;若在字典中,则将value值改为2。最后遍历字典,找到value为1的元素,并返回键值。
16个用例,耗时56ms,击败14%python提交记录。
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ dic = {} for number in nums: if number not in dic: dic[number] = 1 else: dic[number] = 2 for key,value in dic.items(): if value == 1: return key
思路二
(参考大佬的)
不使用额外空间。用到了异或操作 ^ 。任何数与0异或结果为本身,任何数和本身异或,结果为0。异或满足加法结合律和交换律。
16个用例,耗时48ms,击败17%python提交记录
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ res = 0 for number in nums: res = res^number return res
相关文章推荐
- LeetCode 136.只出现一次的数字(python)
- LeetCode:只出现一次的数字(Python版本)
- LeetCode136.python实现: 只出现一次的数字☆
- [leetcode]2018.3.22 只出现一次的数字
- LeetCode刷题-只出现一次的数字 II
- Java&LeetCode 初入门——136. 只出现一次的数字
- Leetcode 136 只出现一次的数字
- 【leetcode】在一堆每个数字都出现三次的数组中,找到那个只出现一次的数(Single Number II)
- LeetCode刷题指南:只出现一次的数字
- leetcode - 136 - 只出现一次的数字
- LeetCode 只出现一次的数字
- Python 筛选去除只有一次出现的数字
- LINTCODE:136 只出现一次的数字(Python语言实现)
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- leetcode之136 只出现一次的数字
- 【136.只出现一次的数字】 LeetCode
- LeetCode 137. 只出现一次的数字 II
- leetcode_137. Single Number II 只出现一次的数字 II 偏离了题目考点,主要是为了写下java
- 只出现一次的数字 - LeetCode
- 【leetcode刷题笔记】137. 只出现一次的数字 II