leetcode:442. Find All Duplicates in an Array

来源:互联网 发布:全国所有中小学数据库 编辑:程序博客网 时间:2024/06/04 19:28

即找出数组中的重复的数字,题目咋一看比较简单,但是要求不允许使用额外的空间,复杂度为o(n)

class Solution(object):    def findDuplicates(self, nums):        """        :type nums: List[int]        :rtype: List[int]        """        return [nums[i] for i in range(len(nums)) if nums[i] in nums[:i]]

随手写的,此答案复杂度超了
以下答案转换数据、下标,应多加思考

class Solution(object):    def findDuplicates(self, nums):        """        :type nums: List[int]        :rtype: List[int]        """        res = []        for x in nums:            print(nums)            if nums[abs(x) - 1] < 0:                res.append(abs(x))            else:                nums[abs(x) - 1] *= -1            print(nums)        return res
0 0