当前位置: 首页 > news >正文

力扣448题:找到所有数组中消失的数字

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

对于题目的理解,容易错的地方是nums数组里面是有n个数的,n个数是存在重复的几个,我们是要找到其中存在的那些数

采取的方法,我是从数组的索引来开始;数组的索引是从0到n-1的,所以与从1到n来会差1的;通过给数组的值取绝对值(避免索引为负的情况)再减以,就是与索引开始一一对应的。然后我把所有nums[index]>0的情况下,标记为负,(因为数组中有的数字是会重复的,所以可以通过这个来找到未出现的数字);后面还有第二个循环,其是要找到nums[i]>0的就是消失的那个数字,返回i+1。

代码:

class Solution {

public List<Integer> findDisappearedNumbers(int[] nums) {

// 第一遍:标记出现过的数字(索引 = 数字-1)

for (int i = 0; i < nums.length; i++) {

int index = Math.abs(nums[i]) - 1; // 取绝对值避免重复标记影响 减1是为了回到数组索引

if (nums[index] > 0) {

nums[index] = -nums[index]; // 标记为负

}

}

// 第二遍:收集未被标记的位置(即消失的数字)

List<Integer> result = new ArrayList<>();

for (int i = 0; i < nums.length; i++) {

if (nums[i] > 0) {

result.add(i + 1);

}

}

return result;

}

}

http://www.jsqmd.com/news/359530/

相关文章:

  • SSM入学新生信息管理系统y0mew程序+源码+数据库+调试部署+开发环境
  • 【第二十九周】机器学习笔记三十
  • 小马智行与摩尔线程战略合作,强强联合能改变什么?
  • SSM球类体育用品商城系统9xsh4(程序+源码+数据库+调试部署+开发环境)
  • Autodesk Inventor professiona
  • “我们数据太少,做不了风控?”——这可能只是个借口
  • SSM人才猎聘系统j9d6n(程序+源码+数据库+调试部署+开发环境)
  • 变量IV值高到“爆表”,是发现宝藏还是踩中陷阱?
  • Autodesk 3ds Max
  • (新卷,100分)- 处理器问题(Java JS Python)
  • FTP文件传输客户端SmartFTP
  • 基于SSA-BPNN+BPNN定位附Matlab代码
  • 基于Matlab的CNN竞争神经网络的聚类分析附Matlab代码
  • RepairKit(系统修复维护工具包)
  • 16.this指针
  • 从入门到精通:大数据环境下的数据脱敏实战指南
  • 28.FPGA实验报告模板(串口为例)
  • AI原生应用如何改变事实核查行业?深度剖析
  • LLMs之Benchmark:《CL-bench: A Benchmark for Context Learn》翻译与解读
  • 大数据时代:Hadoop架构原理全揭秘
  • WordPress从经典编辑器升级到古腾堡编辑器
  • Linux网络编程:深入探索服务器端获取客户端地址结构的艺术
  • AI代理落地踩坑实录:别光看输出,得看它干了啥!手把手教你搭建评估体系
  • 2026年全球电子胶品牌王者有哪些!顶级防霉+环保合规企业盘点 - 品牌推荐2026
  • 高等教育AI辅助教学:从理论到实践的架构设计全攻略
  • 从ETL到AI:大数据规范性分析的技术演进路线
  • CNN-LSSVM多输入单输出回归预测附Matlab代码
  • 2026年全球喷胶品牌王者有哪些!顶级防霉+环保合规企业盘点 - 品牌推荐2026
  • 替换js代码指定字符串
  • 2026年全球MS胶品牌王者有哪些!顶级防霉+环保合规企业盘点 - 品牌推荐2026