Find All Duplicates in an Array

    这道题为简单题

  题目:

    

 

  思路:

    我的思路:定义一个列表ans并初始化,遍历列表nums,并把nums作为a的索引值,每次加1,最后列表生成器生成ans中==2的索引值

    大神的:同样定义一个列表,遍历列表nums,并把x的绝对值-1作为nums索引值判断是否大于0,如果大于0那么就表示,这个数目前只出现一次同时nums[abs(x)-1] *= -1,如果小于0那么表示这个数以前已经出现过,新列表中就添加这个数

  代码:

    我的:

 1 class Solution(object):
 2     def findDuplicates(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: List[int]
 6         """
 7         ans = [0 for i in xrange(len(nums)+1)]
 8         for i in nums:
 9             ans[i] += 1
10         return [x for x in xrange(len(nums)+1) if ans[x] == 2]

    大神:

 1 class Solution(object):
 2     def findDuplicates(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: List[int]
 6         """
 7         res = []
 8         for x in nums:
 9             if nums[abs(x)-1] < 0:
10                 res.append(abs(x))
11             else:
12                 nums[abs(x)-1] *= -1
13         return res

 

转载于:https://www.cnblogs.com/liuxinzhi/p/7597611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值