首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >448. 找到所有数组中消失的数字

448. 找到所有数组中消失的数字

作者头像
名字是乱打的
发布2021-12-24 08:27:33
发布2021-12-24 08:27:33
1.4K0
举报
文章被收录于专栏:软件工程软件工程

一 题目:

二 思路:

  • 不考虑空间正常思路我们可以创建一个长度为n的数组,把每个值填进去,然后最后为空的那个位置就是缺少的
  • 但是由于不能创建额外空间,那么这里我们注意到,这个数组长度为n,那么其实我们可以用nums染色(置负)来表示数字是否存在
  • 最后进行遍历看看哪个位置没有被染色(置负)即可

三 代码:

代码语言:javascript
复制
class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        //染色法,将每个索引i代表i+1的值是否有
        for (int i = 0; i < nums.length; i++) {
            int curr=Math.abs(nums[i]);
            int index=curr-1;
            if (nums[index]>0){
                nums[index]=-nums[index];
            }
        }

        List<Integer> res=new LinkedList<>();
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]>0){
                res.add(i+1);
            }
        }
        return res;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一 题目:
  • 二 思路:
  • 三 代码:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档