• 448. Find All Numbers Disappeared in an Array


    https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/

    给出一列数,1 ≤ a[i] ≤ n,n是数组大小,有些数出现两次,有些数出现一次,找出在[1,n]中但是不在数列中的数。

    不用额外的空间,时间复杂度O(n)

    Example:

    Input:
    [4,3,2,7,8,2,3,1]
    
    Output:
    [5,6]
    


    解题思路:
    一开始想的很简单
    1、把原数组去重
    2、构造一个[1,n]的数组,然后求个差集就行了

    既然都是用python,set这个数据结构简直就是去重神器,直接set(nums)就去重
    求差积的话list比较麻烦,set相减可以直接求差积
    最后return要求是list数据结构,转回来就行
    class Solution(object):
        def findDisappearedNumbers(self, nums):
            return list(set(range(1, len(nums) + 1)) - set(nums))
    ps1.不要做一边append/remove这种操作一边遍历数组,常常会越界,宁愿复制出来一个再操作
    ps2.在py2.7里面range()返回一整個list,xrange()返回一个生成器,后者在空间效率上高很多,大多数情况下无脑用xrange()就可以了。
    py3就没这个问题,因为机智的让range()就是老xrange(),然后干掉了老range().

  • 相关阅读:
    Win10中的IIS10安装php manager和IIS URL Rewrite
    第十四周
    第十三周
    第十二周
    第十一周
    第十周
    第九周
    测试作业
    第八周
    第七周
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/6220994.html
Copyright © 2020-2023  润新知