zoukankan      html  css  js  c++  java
  • LeetCode——Find All Numbers Disappeared in an Array

    LeetCode——Find All Numbers Disappeared in an Array

    Question

    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]

    Solution

    用hash table求解。

    Answer

    class Solution {
    public:
        vector<int> findDisappearedNumbers(vector<int>& nums) {
            map<int, int> dict;
            for (int i : nums)
                dict[i]++;
            vector<int> res;
            for (int i = 1; i <= nums.size(); i++)
                if (dict[i] == 0)
                    res.push_back(i);
            return res;
        }
    };
    

    时间复杂度O(2n)。 网上给出了另外一种解答:

    The idea is very similar to problem 442. Find All Duplicates in an Array: https://leetcode.com/problems/find-all-duplicates-in-an-array/.

    First iteration to negate values at position whose equal to values appear in array. Second iteration to collect all position whose value is positive, which are the missing values. Complexity is O(n) Time and O(1) space.

    class Solution {
    public:
        vector<int> findDisappearedNumbers(vector<int>& nums) {
            int len = nums.size();
            for(int i=0; i<len; i++) {
                int m = abs(nums[i])-1; // index start from 0
                nums[m] = nums[m]>0 ? -nums[m] : nums[m];
            }
            vector<int> res;
            for(int i = 0; i<len; i++) {
                if(nums[i] > 0) res.push_back(i+1);
            }
            return res;
        }
    };
    

    它的意思是数组中有这个数,那么对应位置的数就会变成负的,如果数组中缺失某个数,那么这个数对应位置的数最后就是正的。所以,凡是最后为正的数的位置都是缺失的数。

  • 相关阅读:
    测试管理_测试工作量估算
    Mycat原理、应用场景
    linux负载均衡总结性说明(四层负载/七层负载)
    Spring自动装配Bean的五种方式
    计算机组成原理总结
    MyBatis总结
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    初探Nginx服务器的整体架构
    mybatis架构理解
    linux环境上运行.net core 初探
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/6658609.html
Copyright © 2011-2022 走看看