448. Find All Numbers Disappeared in an Array

2023-11-16

查找缺失的数据

相似的题目查看如下链接的基本情况

448 查找缺失的数据

442. Find All Duplicates in an Array

先解决查找数组当中相同的元素

这道题目是442的,如何查找出数组当中出现多次的元素, 这就是桶排序算法

数组当中的每个元素大小都是1<<x<<n ,

只要注意这两个地方即可

  1. 桶排序,归位处理
  2. 遍历一遍, 将没有归位处理的元素进行添加操作即
    注意上面归位的意思是指元素的再相应的位置上面即可,所以在这里的是跟坐标的元素进行对比即可
class Solution {
    public List<Integer> findDuplicates(int[] nums) {
        // 桶排序算法, 归位处理即可
        List<Integer> result= new LinkedList<>();
        if(nums==null || nums.length==0)
            return result;
        for( int i=0;i<nums.length;i++){
            // 进行一定的元素交换的基本情况     
        // 判断是否数组越界的问题, 不断进行处理该种情况即可
        while(nums[i]!=nums[nums[i]-1])
            {
                int tmp = nums[i];
                nums[i]= nums[nums[i]-1];
                nums[nums[i]-1] =tmp;
            }
        }
        for(int i=0;i<nums.length;i++){
            //判断是否还有还有没有归位处理的元素情况
            if(i=nums[i]-1)
                result.add(nums[i]);
        }
        return result;
    }
}

如果是查找不存在的元素类似448题目, 就是讲左边相加的元素进行添加

class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
           List<Integer> result= new LinkedList<>();
        if(nums==null || nums.length==0)
            return result;
        // 判断是否数组越界的问题, 不断进行处理该种情况即可
         for(int i=0;i< nums.length;i++){
         while(nums[i]!=nums[nums[i]-1])
            {
                int tmp = nums[nums[i]-1];
                nums[nums[i]-1]= nums[i];
                nums[i] =tmp;
            }
        }
         for(int i=0;i< nums.length;i++){
                if(i!=nums[i]-1){
                // 把相同元素的添加到中间即可
                    result.add(i+1);
                }
        }
    return result;
    }
}

标记方法

比如数组Input:
[4,3,2,7,8,2,3,1]

Output:
[5,6]

假如 1出现了在数组当中, 我们将数组当中的int array[1]= 变换 为 求相反数, 即可,
变成
[-4,3,2,7,8,2,3,1], array[1]<0 所以index =1 肯定是出现在了数组当中
比如5 没出现在数组当中, 所以array[5] = 8 还是大于0, 在这种情况下在这里插入图片描述

class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
           List<Integer> result= new LinkedList<>();
        if(nums==null || nums.length==0)
            return result;
        // 判断是否数组越界的问题, 不断进行处理该种情况即可
         for(int i=0;i< nums.length;i++){
        // 每个数组当中数据对应的是下标元素
             int index = Math.abs(nums[i])-1;
             if(nums[index]>0){
                 nums[index]= -nums[index];
             }
        
        }
         for(){
                if(nums[i]>0){
                    result.add(i+1);
                }
        }
    return result;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

448. Find All Numbers Disappeared in an Array 的相关文章

  • Java创建数组的几种方式

    1 一维数组的声明方式 type arrayName 或 type arrayName 附 推荐使用第一种格式 因为第一种格式具有更好的可读性 表示type 是一种引用类型 数组 而不是type类型 建议不要使用第二种方式 下面是典型的声明
  • 26-LeetCode刷题之删除有序数组中的重复项

    个人主页 你帅你先说 欢迎点赞 关注 收藏 既选择了远方 便只顾风雨兼程 欢迎大家有问题随时私信我 版权 本文由 你帅你先说 原创 CSDN首发 侵权必究 为您导航 题目 解题思路 代码实现 题目 26 删除有序数组中的重复项 解题思路 思
  • 【寒假每日一题】蛇形矩阵

    问题1 题目来源 AcWing 题目链接 756 蛇形矩阵 AcWing题库 题目描述 输入两个整数 n 和 m 输出一个 n 行 m 列的矩阵 将数字 1 到 n m 按照回字蛇形填充至矩阵中 具体矩阵形式可参考样例 输入格式 输入共一行
  • 把一个数组的第三到第六位之间的元素删除 形成一个新的数组

    思路一 找到第三和第六之间的4和5位 也就是下标位3和4的元素 删除之后再前移 思路二 找到第三和第六之间的4和5位 也就是下标位3和4的元素 运用if中continue关键字跳过这两个位置 思路一和思路二的区别是思路一元素前移最后两位是0
  • C#中的Dictionary简介

    简介 在C 中 Dictionary提供快速的基于键值的元素查找 当你有很多元素的时候可以使用它 它包含在System Collections Generic名空间中 在使用前 你必须声明它的键类型和值类型 详细说明 必须包含名空间Syst
  • 2605. 从两个数字数组里生成最小数字

    文章目录 Tag 题目来源 题目解读 解题思路 方法一 枚举比较法 方法二 集合的位运算表示法 写在最后 Tag 贪心 位运算 数组 题目来源 2605 从两个数字数组里生成最小数字 题目解读 给定两个各自只包含数字 1 到 9 的两个数组
  • Leetcode刷题209. 长度最小的子数组

    给定一个含有 n 个正整数的数组和一个正整数 target 找出该数组中满足其和 target 的长度最小的 连续子数组 numsl numsl 1 numsr 1 numsr 并返回其长度 如果不存在符合条件的子数组 返回 0 示例 1
  • 找出数组中重复数字

    描述 查找数组中的重复元素情况 时间复杂度为o n 空间复杂度为o 1 数组的大小为n 数组元素值大小为0到n 1 比如 n 4 2 3 1 2 3 思路一 采用记录的思路访问 如果array i 代表一个位置 如果array array
  • PHP获取二维数组中指定Key的重复Value

  • js 比较两个数组的内容是否相同

    js比较数组 arrA 和 arrB 可以用 arrA sort toString arrB sort toString 来进行比较 用循环肯定可以实现 不过太麻烦 这是一种简单的方法先将数组排序 然后转化成字符串 再比较字符串即可 测试时
  • 从一个数组中随机取出若干个数

    随机取数 下面给出从一个数组随机取出若干数字组成新书组和从一个数组随机取出一个数字的方法 代码如下 从一个数组中随机取出若干个元素组成数组 param Array arr 原数组 param Number count 需要随机取得个数 co
  • 两个数组的交集

    摘自 https leetcode cn com problems intersection of two arrays solution duo chong jie fa jie jue 349 liang ge shu zu de ji
  • LeetCode-1827. 最少操作使数组递增【贪心,数组】

    LeetCode 1827 最少操作使数组递增 贪心 数组 题目描述 解题思路一 简单暴力 解题思路二 优化1 ans是操作数 mx是当前最大元素 mx无论如何会依次递增 解题思路三 优化2 遇到小的数就pre 1 否则变为num 题目描述
  • MATLAB 学习笔记(4)MATLAB 数组

    目录 MATLAB数组 MATLAB中的特殊阵列 MATLAB 魔方矩阵 MATLAB 多维数组 详细例子 MATLAB数组函数 详细示例 MATLAB数组排序 MATLAB单元阵列 注意 详细例子 MATLAB在单元格上阵列访问数据 MA
  • 【C++】细说C++中的数组之“静态”数组

    转自博主 https blog csdn net u013921430 article details 79514972 感谢分享 以备学习
  • LeetCode题解——394. 字符串解码

    题目相关 题目链接 LeetCode中国 https leetcode cn com problems decode string 注意需要登录 题目描述 给定一个经过编码的字符串 返回它解码后的字符串 编码规则为 k encoded st
  • 指向数组的引用 const char(&p)[a]

    指向数组的引用 const char p a 问题起源 如何在函数内 也能获取数组的大小信息 如果是定义一个数组a后 使用如下方法即可获取大小信息 cout lt lt sizeof a sizeof a 0 但是如果作为一个参数传入到一个
  • python 数组操作中的 “:” “:: ” “, ” python 中的 [:-1] 和 [::-1] [-1:-2:-1] [

    使用python版本3 7 首先先了解下python3 7中的下标 python下标有两套 一套是正的 一套是负的 引入负坐标的意义应该是方便将数组中的数据从右往左访问 a python 中的python 的下标描述如下 组 p y t h
  • 数据结构与算法2--数组常见操作

    数据结构与算法2 数组常见操作 数组是最常见也是我们使用最多的数据结构了 它是一块连续的内存空间 以下标来描述空间的位置 C 中int arr len 表示的的数组一旦配置后大小就无法改变 vector
  • 输出数组的最大值、最小值及其位置

    题目 输入一个长度为10的数组 输出数组的最大值 最小值及其最大值 最小值在数组里的位置 思路 如果只需找出最大值 我们可以假定最大值max为数组的第一个元素 然后将剩余的元素逐个和max比较 如果有比max更大的元素 就将其记录下来 直到

随机推荐