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 的相关文章

  • ES6中数组首尾两端和中间添加/移除数据方法

    1 push 尾端插入 返回数组长度 let arr 1 hello true console log arr push 22 4 console log arr arr 1 hello true 22 console log arr pu
  • LeetCode之最值问题系列问题求解

    最值系列题目求解 这类型题目的特点就是一个数组 或者字符串 给的条件是连续或者不连续 或者给定限定条件进行求解的情况 解题的关键 采用两个变量 一个变量记录前面的条件 或者最后一个不满足题意的index 或者最小值 比如股票题目当中j 或者
  • 把一个数组的第三到第六位之间的元素删除 形成一个新的数组

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

    简介 在C 中 Dictionary提供快速的基于键值的元素查找 当你有很多元素的时候可以使用它 它包含在System Collections Generic名空间中 在使用前 你必须声明它的键类型和值类型 详细说明 必须包含名空间Syst
  • string[]数组转为int[]数组方法

    string arrTemp 22 23 222 int intArray intArray Array ConvertAll
  • 2605. 从两个数字数组里生成最小数字

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

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

  • 如何使用下标遍历二维数组

    点击打开链接 int my 2d array 10 10 假定数组my 2d array 已经预先被填充了数据 int i j 遍历这个数组 for i 0 i lt 10 i 向下遍历各行 for j 0 j lt 10 j 穿越各列 p
  • Java实现杨辉三角

    代码实现 package day01 public class yanghui public static void main String args 声明二维数组并初始化 int yanghui new int 10 给二维数组赋值 fo
  • C语言实验(十四):指针(数组排序,数组求平均数、中位数和众数)

    C语言实验 十四 指针 数组排序 数组求平均数 中位数和众数 一 输入10个整数 利用指针分别由小到大排序 由大到小排序 二 输入10个整数 通过指针引用数组 实现三个函数 分别求这10个整数的平均值 中位数 中值 数组名作为函数参数 通过
  • 力扣之两数之和(题号1)

    题目叙述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 你不能重复利用这个数组中同样的元素 示例 给定 nums 2 7
  • 在一个数组中找出两个数,这两个数之和为指定目标值,返回这两个数下标(leecode)(c++)

    本文主要总结在一个数组中取出两个数 这两个数满足条件为 两数之和为制定目标值target 并且函数返回这两个数下表 示例 给定 nums 5 6 7 8 9 10 target 19 因为 nums 4 nums 5 9 10 19 所以返
  • numpy tolist()的用法

    1 将数组或者矩阵转换成列表 如下 gt gt gt from numpy import gt gt gt a1 1 2 3 4 5 6 a1是列表 gt gt gt a2 array a1 列表 gt 数组 gt gt gt a2 arr
  • C++:二维数组--输出斐波那契数列的前20项

    大家都知道 在数学世界中有很多神奇的数列 斐波那契数列正是众多有规律的数列中的一种 该数列是意大利数学家列昂纳多 斐波那契发现的 他的基本规律是从第三项开始 每一项都等于前两项之和 第一项和第二项都是1 斐波那契数列如下图所示 1 1 2
  • 448. Find All Numbers Disappeared in an Array

    查找缺失的数据 相似的题目查看如下链接的基本情况 448 查找缺失的数据 442 Find All Duplicates in an Array 先解决查找数组当中相同的元素 这道题目是442的 如何查找出数组当中出现多次的元素 这就是桶排
  • 【C++】细说C++中的数组之“静态”数组

    转自博主 https blog csdn net u013921430 article details 79514972 感谢分享 以备学习
  • 【Java笔记】Java8中数组(引用类型)、String、List、Set之间的相互转换问题

    数组 String List Set之间的相互转换问题 如果觉得对你有帮助 能否点个赞或关个注 以示鼓励笔者呢 博客目录 先点这里 本博主要是相理清楚一些转换的逻辑 顺便总结一下贴出来 这里是把一些可以JDK自带的使用方法写出了 不代表没有
  • LeetCode-283. 移动零【数组,双指针】

    LeetCode 283 移动零 数组 双指针 题目描述 解题思路一 首先想到的是双指针 但是不行 非零元素的位置会改变 解题思路二 改进的是每次从当前0元素的位置取后面第一个非0元素替换过来 替换之和那个break非常重要 解题思路三 优
  • C++基础-一维和二维数组详解

    目录 定义 一维数组 二维数组 定义 数组是相同类型的对象序列 它们占据一块连续的内存区 一维数组

随机推荐