【LEETCODE】136-Single Number
2015-12-28 15:09
148 查看
Given an array of integers, every element appears
twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题意:
给一个整数数组,除了一个以外,其余元素都出现两次,找到这一个元素
注意:
算法的时间复杂度应该是线性的,能想到不用额外的空间的方法么
思路:
1.建立dict,数每个元素出现的次数,返回次数为1的元素
2.位操作:
参考:http://www.cnblogs.com/zuoyuan/p/3719584.html
异或操作具有这两个特点,x ^ 0 = x,x ^ x = 0,并且与先后顺序无关,
所以出现两次的都会变成0,0再和出现一次的异或,剩下它自己
方法1:
方法2:
twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题意:
给一个整数数组,除了一个以外,其余元素都出现两次,找到这一个元素
注意:
算法的时间复杂度应该是线性的,能想到不用额外的空间的方法么
思路:
1.建立dict,数每个元素出现的次数,返回次数为1的元素
2.位操作:
参考:http://www.cnblogs.com/zuoyuan/p/3719584.html
异或操作具有这两个特点,x ^ 0 = x,x ^ x = 0,并且与先后顺序无关,
所以出现两次的都会变成0,0再和出现一次的异或,剩下它自己
方法1:
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ A={} #for i in range(len(nums)): # if nums[i] not in A: # A[nums[i]]=1 # else: # A[nums[i]]=2 for i in nums: if i not in A: A[i]=1 else: A[i]=2 for j in A: if A[j]==1: return j
方法2:
class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ ans=nums[0] for i in range(1,len(nums)): ans=ans^nums[i] return ans
相关文章推荐
- UICollectioView的组头和组尾的高度不同设置
- [Oracle] rowid详解
- textarea 光标处插入值
- 如何让C#生成的dll动态库文件,在被引用时带有注释备注提示
- IOS心得
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
- 将Highcharts图表数据生成Table表格
- Java中如何解决double和float精度不准的问题
- stm32里面关于ADC模块的一些知识。
- 任玉刚【Android开发艺术探索】读后笔记二
- 内存溢出之Tomcat内存配置
- Android listView 头部添加透明titleBar
- sublime配置
- 二维码显示要求
- #308 (div.2) B. Vanya and Books
- 一个项目配置多个数据库
- PCA-SIFT总结
- MySQL Fabric实验(一)HA
- Android paint的drawText() 的正确使用方式
- C++入门(5):定义个人函数