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

    Leetcode  448. Find All Numbers Disappeared in an Array

    Description Submission Solutions

    • Total Accepted: 31266
    • Total Submissions: 58997
    • Difficulty: Easy
    • Contributors: yuhaowang001

    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), 不能申请额外的空间, 只能在原数组进行swap操作了。 

    (2), 根据数据的类型,大小都是处于 [1, n], 进行位置操作。

    class Solution {
    public:
        vector<int> findDisappearedNumbers(vector<int>& nums) {
            vector<int> ans;
            int i = 0; 
            while(i<nums.size()){
                if(nums[i] != nums[ nums[i]-1 ]){
                    swap(nums[i], nums[ nums[i]-1 ] ); 
                }else{
                    ++i; 
                }
            }
            for(int i=0; i<nums.size(); ++i){
                if(nums[i] != i+1){
                    ans.push_back( i+1 ); 
                }
            }
            return ans; 
        }
    };
    

      

  • 相关阅读:
    Nginx日志管理
    Nginx负载均衡
    Nginx 缓存
    Nginx代理服务器
    Nginx搭建 Web服务
    Nginx HTTP模块
    洛谷P1012拼数
    洛谷 P1876 开灯
    洛谷P2084 进制转化
    关于typedef的用法
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/6528014.html
Copyright © 2011-2022 走看看