题目:

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

示例 1:

输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]
示例 2:

输入:nums = [1,1]
输出:[2]

提示:

n == nums.length
1 <= n <= 105
1 <= nums[i] <= n
进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、

1.创建一个ArrayList数组和一个布尔型数组

2.先遍历一遍nums数组,把出现过的数字的b[m]设置为true

3.然后遍历循环1-n,如果b[i]=false,则表示nums数组中没出现过,则添加到a结果数组中

代码:

二、

1.创建一个ArrayList数组和一个HashSet集合(不允许有重复元素)

2.循环遍历,去掉重复元素,添加到新的集合中

3.循环遍历1-n,如果集合中不包含某个元素,就添加到a数组中,最终输出结果数组

 

小知识:

1.ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制

创建ArrayList:

ArrayList<E> objectName =new ArrayList<>(); 
数据类型<集合存储的数据类型> 变量名 = new 数据类型<集合存储的数据类型>();

2.添加元素到 ArrayList 可以使用 add() 方法

a.add(i);

3. ArrayList可以使用 for-each 来迭代元素

4.HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合
  创建一个 HashSet 对象 b,用于保存元素

HashSet b = new HashSet()

5.HashSet 类添加元素可以使用 add() 方法

 for(int i = 0; i < n;i++){
b.add(nums[i]);
}

6.HashSet 类使用 contains() 方法来判断元素是否存在于集合当中

 for(int i = 1;i < n + 1; i++){
if(!b.contains(i)){
a.add(i);
}

7.布尔数组,默认值是false,  并且只会打印false或者是true

   根据字符数组的长度创建布尔数组的个数

boolean[] b = new boolean[c.length]; 

力扣448(java)-找到数组中所有消失的数(简单)的更多相关文章

  1. Java 找到数组中两个元素相加等于指定数的所有组合

    思路1:可以用hash表来存储数组中的元素,这样我们取得一个数后,去判断sum - val 在不在数组中,如果在数组中,则找到了一对二元组,它们的和为sum,该算法的缺点就是需要用到一个hash表,增 ...

  2. [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...

  3. java将数组中的零放到末尾

    package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...

  4. 【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?

    如何使用异或(XOR)运算找到数组中缺失的数? 今天给大家分享一篇关于使用XOR(异或)运算找到数组中缺失的数的问题. 在一次Javascript面试中,有这么一个问题: 假设有一个由0到99(包含9 ...

  5. 3.键盘输入10个数,放到数组中,(1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中

    package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; ...

  6. C语言100题集合005-删除一维数组中所有相同的数,使之只剩一个

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  7. [LeetCode] 448. Find All Numbers Disappeared in an Array 找到数组中消失的数字

    题目描述 给定n个数字的数组,里面的值都是1-n,但是有的出现了两遍,因此有的没有出现,求没有出现值这个数组中的值有哪些. 要求不能用额外的空间(除了返回列表之外),时间复杂度n 思路 因为不能用额外 ...

  8. leetcode-1 Two Sum 找到数组中两数字和为指定和

     问题描写叙述:在一个数组(无序)中高速找出两个数字,使得两个数字之和等于一个给定的值.如果数组中肯定存在至少一组满足要求. <剑指Offer>P214(有序数组) <编程之美& ...

  9. 【力扣】两个数组的交集 II

    给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2: 输入:nums1 = [4,9,5], nu ...

  10. [java]删除数组中的某一个元素

    package org.company.project.test; import java.util.Arrays; import java.util.Scanner; public class Ar ...

随机推荐

  1. Vite + Vue3.0 项目初始化

    主要是冷启动,实际中项目非常庞大,现在1w的笔记本,每次冷启动,也得等一下,所以准备转型 Vite+Vue3.0,毕竟Vite不支持Vue2.0,这就只能下个项目的时候再启动了. $ npm init ...

  2. IDEA/Android Studio的gradle控制台输出中文乱码问题解决

    原文地址: IDEA/Android Studio的gradle控制台输出中文乱码问题解决 - Stars-One的杂货小窝 在项目中,有使用到Gradle自定义脚本,会有些输出日志,但是输出中文就变 ...

  3. jprofiler注册码共享

    name和company随意,license如下: L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257 L-Larry_Lau@163.com#5481-ucj ...

  4. Linux Char-Driver (字符驱动 摘要)(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  5. WPF自定义Panel:让拖拽变得更简单

    在 WPF 应用程序中,拖放操作是实现用户交互的重要组成部分.通过拖放操作,用户可以轻松地将数据从一个位置移动到另一个位置,或者将控件从一个容器移动到另一个容器.然而,WPF 中默认的拖放操作可能并不 ...

  6. Oracle日期加减

    1.直接加减数字 SELECT SYSDATE "当前时间", SYSDATE + 1 "加一天", SYSDATE + (1 / 24) "加一小时 ...

  7. KingbaseES V8R6 备份恢复案例--异机备份ssh认证失败

    案例说明: 在生产环境,数据库服务被重启后,监控发现数据库物理备份的脚本无法执行,故障现象如下所示,从备份日志和sys_log中都出现了远程主机连接认证错误. 1)备份日志:(连接数据库服务器认证错误 ...

  8. java实战字符串1:给定两个字符串 s 和 t,判断他们的编辑距离是否为 1。

    题目描述给定两个字符串 s 和 t,判断他们的间距是否为 1.(满足以下三个条件) 往 s 中插入一个字符得到 t从 s 中删除一个字符得到 t在 s 中替换一个字符得到 t 例1 输入: ab ac ...

  9. 提升系统管理:监控和可观察性在DevOps中的作用

    在不断发展的DevOps世界中,深入了解系统行为.诊断问题和提高整体性能的能力是首要任务之一.监控和可观察性是促进这一过程的两个关键概念,为系统的健康和性能提供了宝贵的可见性.虽然这些术语经常可以互换 ...

  10. 网络设备性能指标之pps

    基本概念: Bps:Byte per second 每秒传输多少字节 bps: bits per second 每秒传输多少位 ,这个也叫做端口速率 pps:Packet Per Second(包每秒 ...