LeetCode136.python实现: 只出现一次的数字☆
2019-03-11 10:45
295 查看
目录
一、问题
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
[code]输入: [2,2,1] 输出: 1
示例 2:
[code]输入: [4,1,2,1,2] 输出: 4
二、解题思路
分析:异或运算性质的考察:相同为0,不同为1. 异或同一个数两次,原数不变。(与0相异或,保留原值)
三、python具体实现
使用了2字节额外空间:
[code]class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ result = 0 for i in nums: result = result^i # 异或操作 return result
不使用额外空间实现:
[code]class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ for i in nums[1:]: nums[0] = nums[0]^i return nums[0]
四、题外话
知道异或就会很简单,不知道就难住了。学到了!
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(仅仅出现一次的数字)】
- LINTCODE:136 只出现一次的数字(Python语言实现)
- LeetCode刷题之一:寻找只出现一次的数字
- LeetCode 136 Single Number(数组中只出现一次的数字)
- Leetcode136. 只出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现
- 只出现一次的数字 [ LeetCode ]
- LeetCode 260 Single Number III(数组中只出现一次的数字3)
- 数组中只出现一次的数字(Java实现)
- 编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
- leetcode5只出现一次的数字
- leetcode136 只出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现
- C语言- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。
- 《剑指offer》编程题java实现(二十三):数组中唯一只出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都成对出现,找出这两个数字,编程实现
- leetcode的python实现 刷题笔记13: 罗马数字转整数
- LeetCode(初级算法)数组篇--只出现一次的数字c++