zoukankan      html  css  js  c++  java
  • leetcode 448. Find All Numbers Disappeared in an Array

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

    Find all the elements of [1, n] inclusive that do not appear in this array.

    Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

    Example:

    Input:
    [4,3,2,7,8,2,3,1]
    
    Output:
    [5,6]
    
    解法:因为要修改输入,个人觉得这并不是一个优雅的解法。
    class Solution(object):
        def findDisappearedNumbers(self, nums):
            """
            :type nums: List[int]
            :rtype: List[int]
            """
            # use nums as a map
            # if x in nums appear, set nums[x] to negative
            # if [1,n] in map, map it with negative number
            for n in nums:
                i = abs(n)-1
                if nums[i]>0:
                    nums[i] = -nums[i]
            return [i for i in xrange(1, len(nums)+1) if nums[i-1]>0]                    

    解法2:排序,将数值放到对应位置上。使用贪心算法!

    class Solution(object):
        def findDisappearedNumbers(self, nums):
            """
            :type nums: List[int]
            :rtype: List[int]
            """
            # sort num in nums to its right position
            # for each num, use greedy algo to move num to its right pos, until nums[i] = i+1 
            # for example:
            # [4,3,2,7,8,2,3,1]
            # [7,3,2,4,8,2,3,1]
            # [3,3,2,4,8,2,7,1]
            # [2,3,3,4,8,2,7,1]
            # [3,2,3,4,8,2,7,1]
            # pos 3 is 3 end
            # [3,2,3,4,8,2,7,1]
            # [3,2,3,4,1,2,7,8]
            # [1,2,3,4,3,2,7,8]
            # pos 3 is 3 end
            # ...
            for i,n in enumerate(nums):
                while nums[nums[i]-1] != nums[i]:
                    nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]
            return [i+1 for i,n in enumerate(nums) if n!=i+1]                            
  • 相关阅读:
    领扣(LeetCode)七进制数 个人题解
    ie固定table单元格宽度
    js 阻止冒泡
    在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示(转)
    WebStorm 6.0 与 7.0 注册码
    统制Highcharts中x轴和y轴坐标值的密度
    ie版本
    flash透明 处于最低
    eclipse svn --
    jquery---- 数组根据值进行删除
  • 原文地址:https://www.cnblogs.com/bonelee/p/8589088.html
Copyright © 2011-2022 走看看