python--leetcode442. Find All Duplicates in an Array
来源:互联网 发布:gs与js防水涂料的区别 编辑:程序博客网 时间:2024/05/16 02:38
Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements that appear twice in this array.
Could you do it without extra space and in O(n) runtime?
Example:
Input:[4,3,2,7,8,2,3,1]Output:[2,3]
这一题乍一看来很简单,其实若是不考虑时间确实很简单,问题是题目要求了O(n)。
说句实话,我第一次提交的代码超时了,心痛。
先上这个代码吧:
class Solution(object): def findDuplicates(self, nums): """ :type nums: List[int] :rtype: List[int] """ res=[] for i in range(len(nums)): if nums.count(nums[i])==2 :res.append(nums[i]) res=list(set(res)) return ress=Solution()print(s.findDuplicates([4,3,2,7,8,2,3,1]))第一眼感觉没问题,仔细一看会发现.count函数应该是有时间复杂度的。
不超时的解法思路:
仔细审题,题目说了 1 ≤ a[i] ≤ n (n = size of array) 。于是我们遍历list,每个元素只要出现一次,我们就把它对应的下标元素乘以-1.这样倘若其对应下标的元素已经为负数,说明该元素在此之前出现过一次。
没理解我说的意思的同学看看代码吧,逻辑比较清楚。代码如下:
class Solution(object): def findDuplicates(self, nums): """ :type nums: List[int] :rtype: List[int] """ res = [] for x in nums: if nums[abs(x)-1] < 0: res.append(abs(x)) else: nums[abs(x)-1] *= -1 return res
阅读全文
1 0
- Leetcode442. Find All Duplicates in an Array
- leetcode442. Find All Duplicates in an Array
- leetcode442 Find All Duplicates in an Array
- Leetcode442. Find All Duplicates in an Array
- python--leetcode442. Find All Duplicates in an Array
- leetcode442 Find All Duplicates In An Array Java
- 25.leetCode442:Find All Duplicates in an Array
- LeetCode442. Find All Duplicates in an Array解题
- 442. Find All Duplicates in an Array
- [LeetCode]Find All Duplicates in an Array
- LeetCode Find All Duplicates in an Array
- 442. Find All Duplicates in an Array
- 442. Find All Duplicates in an Array
- Find All Duplicates in an Array
- 442. Find All Duplicates in an Array
- Leetcode Find All Duplicates in an Array
- 442. Find All Duplicates in an Array
- [Leetcode] Find All Duplicates in an Array
- Redis基础、高级特性与性能调优
- java.util.concurrent.CountDownLatch控制线程执行工具类源码解析
- v-model组件理解
- bzoj 1217: [HNOI2003]消防局的设立
- ORM的概念, ORM到底是什么
- python--leetcode442. Find All Duplicates in an Array
- 蚂蚁问题变形
- 查找算法
- 1066. 图像过滤(15)
- 最小生成树prim模板
- HDU 1171 Big Event in HDU (多重背包,可转换为01背包)+对于背包的一点认识
- Online Judge 榜单清空操作
- TCP协议怎样进行流量控制,并且怎么保证传输的可靠性
- 关于区块链的一点概述