leetcode-448 Find All Numbers Disappeared in an Array

来源:互联网 发布:海岛大亨4 mac 汉化 编辑:程序博客网 时间:2024/05/27 20:52

中文描述

数组arr,长度为n,0<arr[i]<n,找出1~n中没有在数组中出现的数字,找出数组中没有出现的数据,时间复杂度为o(n),尽量不要浪费空间。

说明

从0<arr[i]<n,并且是数组,并且不要浪费空间,因此只能在原数组的基础上进行判断,而进行判断,需要明确:如何确定哪个数字出现了?如何确定是否出现?    1 通过数组的下标,确定数字,2 通过+,-号确定该数字是否出现。遍历数组,元素值的绝对值减一作为下标,该下标对应的值改为负值。遍历数组,元素值为整数的,说明改下标加一的数字没有出现。

java代码

public static List<Integer> findAllNumbersDisapperaredInAnArray(Integer[] nums){        List<Integer> list = new ArrayList<Integer>();        printArr(nums);        for(Integer n : nums){            nums[Math.abs(n)-1] = -Math.abs(nums[Math.abs(n)-1]);            printArr(nums);        }        for(int i=0;i<nums.length; i++){            if(nums[i] > 0){                list.add(i+1);            }        }        return list;    }

先临时记录自己的方法,刷完easy题之后再去看别人的方法,如果有更好的方法,会做补充,如果你有的话请留言,谢谢啦

0 0
原创粉丝点击