Leetcode--448. 找到所有数组中消失的数字
归位处理:遍历数组,检查每个元素是否在其应有的位置。如果不在,则将其移动到正确的位置。例如,数字 x 应该放在位置 x。 检查位置:在所有元素都正确归位之后,遍历数组,检查每个位置是否等于其索引 + 1。如果不等于,则该位置对应的数字就是我们要找的缺失数字。 归位处理:使用一个循环遍历数组中的每个元素。对于每个元素,检查它是否在其应有的位置。如果不在,则将其移动到正确的位置。这种方法确保每个元素最终都位于其应有的位置。 检查位置:在归位处理完成后,遍历数组,检查每个位置的值是否等于其索引 + 1。如果不等于,则说明该位置对应的数字在数组中没有出现,加入结果列表。
发布日期:2021-04-30 21:05:02
浏览次数:102
分类:精选文章
本文共 1132 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到数组中在范围 [1, n] 之间没有出现在数组中的数字。我们可以使用归位法来解决这个问题,这种方法的时间复杂度为 O(n),空间复杂度为 O(1),并且不需要额外的数据结构。
方法思路
归位法的核心思想是将数组中的每个元素移动到它应有的位置。具体步骤如下:
解决代码
import java.util.ArrayList;import java.util.List;public class Solution { public List findDisappearedNumbers(int[] nums) { List result = new ArrayList<>(); int n = nums.length; // 归位处理 for (int i = 0; i < n; i++) { while (nums[i] != nums[nums[i] - 1]) { int temp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } } // 检查缺失数字 for (int i = 0; i < n; i++) { if (nums[i] != i + 1) { result.add(i + 1); } } return result; }} 代码解释
这种方法通过在原数组上进行操作,避免了额外的空间使用,满足了题目的要求。
发表评论
最新留言
不错!
[***.144.177.141]2026年06月04日 09时53分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP大文件切片下载代码
2023-03-01
php如何做表格,新手怎么制作表格
2023-03-01
RabbitMQ集群 - 普通集群搭建、宕机情况
2023-03-01
PHP如何生成唯一的数字ID
2023-03-01
PHP如何获取当前页面的最后修改时间
2023-03-01
PHP如何读取json数据
2023-03-01
PHP字符串
2023-03-01
PHP字符串递增
2023-03-01
php学习之基础语法
2023-03-01
RabbitMQ集群 - 仲裁队列、Raft协议(最详细的选举流程)
2023-03-01
PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
2023-03-01
PHP学习总结(12)——PHP入门篇之变量
2023-03-01
PHP学习总结(13)——PHP入门篇之常量
2023-03-01
PHP学习总结(14)——PHP入门篇之常用运算符
2023-03-01
PHP学习总结(1)——PHP入门篇之PHP可以做什么?
2023-03-01
PHP学习总结(2)——PHP入门篇之PHP代码标识
2023-03-01
PHP学习总结(3)——PHP入门篇之PHP的echo语句
2023-03-01
PHP学习总结(4)——PHP入门篇之PHP计算表达式
2023-03-01
PHP学习总结(5)——PHP入门篇之PHP字符串
2023-03-01