zoukankan      html  css  js  c++  java
  • 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]

    Subscribe to see which companies asked this question.

    给定一个整数数组,其中1≤a[i]≤n(n =数组大小),某些元素出现两次,而其他元素出现一次。

    找到不出现在这个数组中的[1,n]包含的所有元素。

    你可以在没有额外空间的情况下运行吗? 您可以假设返回的列表不计入额外的空间。

    思路:首先对数组进行排序,然后将数组nums第一个数nums[0]和1进行对比,如果大于1则将[1,nums[0]-1]的数push进要返回的数组;

    然后对nums数组进行循环,后一个数字和前一个数字进行对比,相差大于1,则将[nums[k-1]+1,nums[k]-1]之间的数push进要返回的数组

    最后将数组最后一个值和n进行对比,如果小于n,则将[nums[len-1]+1,n]push进要返回的数组。

    代码:

    var findDisappearedNumbers = function(nums) {
        var len = nums.length;
        var resultArr = [];
        if(len !== 0){
            nums.sort(function(a,b){
                return a-b;
            });
            if(nums[0] > 1){
                for(var i = 1;i < nums[0];i++){
                    resultArr.push(i);
                }
            }
            for(var k = 1;k < len;){
                if(nums[k]-nums[k-1] >= 1){
                    var count = nums[k-1]+1;
                    while(count < nums[k]){
                        resultArr.push(count);
                        count++;
                    }
                }
                k++;
            }
            if(nums[len-1] < len){
                for(var j = nums[len-1]+1;j <=len;j++){
                    resultArr.push(j);
                }
            }
        }
        return resultArr;
    };
  • 相关阅读:
    学习设计模式之中介者模式
    学习设计模式之责任链模式
    学习设计模式之命令模式
    学习设计模式之桥接模式
    学习设计模式之单例模式
    学习设计模式之迭代器模式
    Spring 源码学习——注册 BeanDefinition
    Html.DropDownListFor
    Home vs2013
    Jquery 操作页面中iframe自动跟随窗口大小变化,而页面不出现滚动条,只在iframe内部出滚动条
  • 原文地址:https://www.cnblogs.com/deerfig/p/6646290.html
Copyright © 2011-2022 走看看