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

    找出数组中消失的数,首先一个关键条件是1 ≤ a[i] ≤ n (n = size of array),一些元素出现2次,另一些元素出现1次。找出没有出现的数字。设想这道题中数组元素和数组索引肯定有关,数组元素 1~n, 数组索引 0~n-1, 令idx = abs(nums[i]) - 1, 这一数组元素与数组索引对应关系,如果有重复的数组元素,则对应的数组索引必重复。找出数组中消失的索引,从而找到数组中消失的数。出现过的索引对应的元素都变成为负值,遍历一遍数组找出值为正的元素,令其索引+1即可。

    class Solution {
    public:
        vector<int> findDisappearedNumbers(vector<int>& nums) {
            vector<int> res;
            for (int i = 0; i != nums.size(); i++) {
                int idx = abs(nums[i]) - 1;
                if (nums[idx] > 0)
                    nums[idx] = -nums[idx];
            }
            for (int i = 0; i != nums.size(); i++) 
                if (nums[i] > 0) 
                    res.push_back(i + 1);
            return res;
        }
    };
    // 129 ms
  • 相关阅读:
    ORA-00119: invalid specification for system parameter LOCAL_LISTENER
    local_listener参数的作用!
    DDL为什么不能rollback?
    LGWR和DBWn的触发条件
    修改spfile位置
    初识oracle重做日志文件
    ORACLE AUDIT 审计
    Oracle SQL_TRACE使用小结
    Web API(六):使用Autofac实现依赖注入
    JavaScript:属性的操作
  • 原文地址:https://www.cnblogs.com/immjc/p/7152372.html
Copyright © 2011-2022 走看看