• 448. Find All Numbers Disappeared in an Array


    题目:含有从1~n(数组size)数值的数组,里面存在重复元素,求缺掉的数字。

    要求:不使用多余辅助空间,时间复杂度为(n)的算法

    方法:

    利用  原数组index  一一对应  所求连续数列的数值  的特点,

    顺次遍历数组的同时,遇到某个值,使用正负号来标记已遇到。

    最后在遍历一次,没遇到过的(即所求缺掉的)就是没有标记过的(正数)。

    注意:由于要使用数值去表示index,而遍历过的,会将数值转为负数,

    因此,在利用数值表示index之前,先取绝对值abs

    参考代码:

     1 class Solution {
     2 public:
     3     vector<int> findDisappearedNumbers(vector<int>& nums) {
     4         vector<int> res;
     5         for(int i=0; i<nums.size(); i++){
     6             int m = abs(nums[i]) -1;
     7             if(nums[m]>0){
     8                 nums[m] = -nums[m];
     9             }
    10         }
    11         for(int i=0; i<nums.size(); i++){
    12             if(nums[i]>0) res.push_back(i+1);
    13         }
    14         return res;
    15     }
    16 };
  • 相关阅读:
    Beta版使用说明
    【每日scrum】NO.7
    【每日scrum】NO.6
    【每日scrum】NO.5
    【每日scrum】NO.4
    【每日scrum】NO.3
    【每日scrum】NO.2
    【每日scrum】NO.1
    运行及总结
    测试与调试
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/12389966.html
Copyright © 2020-2023  润新知