LeetCode: 008-Contains Duplicate
2015-12-30 23:46
519 查看
Contains Duplicate
恶补一点简单题。如果列表中有两个重复数据,返回True,反之,返回False
基本思路
最简单的方法是调用sorted函数了,nlog(n)nlog(n)级别。感觉我在平时写脚本的时候,这个问题碰到得相当多,需要仔细学习一下。
基本解法
当然是用sorted啦class Solution(object): def containsDuplicate(self, nums): ord_nums = sorted(nums) for i in xrange(len(ord_nums)-1): if ord_nums[i] == ord_nums[i+1]: return False return True
这玩意居然是56ms的。。。
老实说这是我短时间内想出来最快的方案了。
机智解法
看到discuss里有一个非常机智的解法。我的思路局限在了找出不同的两个数。
这个解法直接从全局角度解决了这个问题。
class Solution(object): def containsDuplicate(self, nums): if len(nums) != len(set(nums)): return True return False
中华儿女多奇志。
我的这种写法比discuss里的写法要快。。。。。
以后还是采用直接return value的方法吧:D
原始写法
class Solution(object): def containsDuplicate(self, nums): return len(nums) != len(set(nums))
还有用集合的
class Solution(object): def containsDuplicate(self, nums): s = set() for num in nums: if num in s: return True else: s.add(num) return False
这样是O(n)O(n)的,因为set 在实现的时候使用了hash查找。。。
难怪比排序快。
大概就是这三种办法了, O(n)O(n)的方法还是得用HashTable,
可怜我这一块都没学。。。
可能的额外任务
Python的HashTable生成?直接用set吗?
相关文章推荐
- UVa 10976 Fractions Again?!(分数拆分)
- ArcGIS Server:Service failed to start
- 2014 Multi-University Training Contest 1 - J Rating
- Brainiac Designer
- 书-Programming Game AI by Example
- glib g_main_loop理解
- AS开发AIDL程序(2)
- 使用AS开发AIDL程序(1)
- opencv_traincascade.exe用到的参数及解释
- Factorial Trailing Zeroes 阶乘的后边有几个0
- ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see
- wait_event_interruptible 使用方法
- web.xml中<security-constraint>和四种认证类型
- Error Domain=NSURLErrorDomain Code=-999错误
- AIDL:进程间通信
- 采用airbnb的airpal和facebook的presto搭建数据平台所遇到的时区,权限问题
- 070 - Climbing Stairs
- POJ-2010 Moo University - Financial Aid
- 自定义View时,用到Paint Canvas的一些温故,只有想不到没有做不到(实例 1,画一个简单的Activity并且实现他能实现的)
- 自定义View时,用到Paint Canvas的一些温故,只有想不到没有做不到(实例 1,画一个简单的Activity并且实现他能实现的)