缺失的第一个正数-面试热题 100?-Lua 中文代码解题第5题

缺失的第一个正数-面试热题 100?-Lua 中文代码解题第5题

解题思路: 

  1. 遍历数组并尝试将元素放入正确的位置: 遍历输入数组 nums,对于每个元素 nums[i]:

    • 如果 nums[i] 是一个正整数,并且它的值小于或等于数组的长度(即在有效范围内),则检查对应下标的值 nums[nums[i]] 是否与 nums[i] 相等。
      • 如果不相等,说明 nums[i] 的位置不是其应该在的位置。此时交换 nums[i] 和 nums[nums[i]] 的值,试图将 nums[i] 放到它应该在的位置上(nums[nums[i]] 应该为 i)。
  2. 寻找未出现的最小正整数: 再次遍历数组 nums,由于前面的操作,数组中下标 i 与值 nums[i] 不匹配的位置(nums[i] 不等于 i)表示原数组中数值为 i 的元素没有出现过。因此,我们只需找到第一个这样的位置 i,返回 i 作为结果。

通过这个方法,可以在遍历一次数组的基础上完成题目要求的任务,虽然在极端情况下时间复杂度可能退化,但在大多数情况下可以实现 O(n) 的平均时间复杂度,并且只使用了常数级别的额外空间。

中文代码 -- 无注释版
函数 缺少的首个正数(输入数组)
    局部 n = #输入数组
    因为 i = 1, n 做
        当 输入数组[i] > 0 与 输入数组[i] <= n 与 输入数组[输入数组[i]] ~= 输入数组[i] 做
            局部 临时数 = 输入数组[i]
            输入数组[i] = 输入数组[临时数]
            输入数组[临时数] = 临时数
        结束
    结束

    因为 i = 1, n 做
        如果 输入数组[i] ~= i 即
            返回 i
        结束
    结束
    返回 n + 1
结束
中文代码 -- 带注释的如下:
-- 缺少的首个正数函数
-- 参数:输入数组,一个包含任意整数的数组
-- 返回值:一个整数,表示输入数组中缺失的首个正数
函数 缺少的首个正数(输入数组)
    局部 n = #输入数组  -- 输入数组的长度

    -- 将输入数组中每个元素替换为该元素所指向的索引上对应的值(如果该值是有效的)
    因为 i = 1, n 做
        当 输入数组[i] > 0 与 输入数组[i] <= n 与 输入数组[输入数组[i]] ~= 输入数组[i] 做
            局部 临时数 = 输入数组[i]
            输入数组[i] = 输入数组[临时数]
            输入数组[临时数] = 临时数
        结束
    结束

    -- 查找缺失的首个正数
    -- 如果输入数组中的元素不等于其对应的索引值,则返回该索引
    因为 i = 1, n 做
        如果 输入数组[i] ~= i 即
            返回 i
        结束
    结束
    -- 如果没有找到缺失的正数,则返回数组长度加一
    返回 n + 1
结束
这段代码运行后将会输出:
-- 测试用例
局部 输入数组1 = {1, 2, 0}
输出(缺少的首个正数(输入数组1))  -- 输出:3

局部 输入数组2 = {3, 4, -1, 1}
输出(缺少的首个正数(输入数组2))  -- 输出:2

局部 输入数组3 = {7, 8, 9, 11, 12}
输出(缺少的首个正数(输入数组3))  -- 输出:1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server 2012 R2在安装软件的时候显示乱码

1、打开控制面板——时钟、语言和区域——语言&#xff0c;添加为汉语 2、接着选择区域为中国 3、完美解决

Covalent Network(CQT)借助最大规模的历史与实时 Web3 数据集,推动人工智能的发展

人工智能在众多领域中增强了区块链的实用性&#xff0c;反之亦然&#xff0c;区块链确保了 AI 模型所使用的数据的来源和质量。人工智能带来的生产力提升&#xff0c;将与区块链系统固有的安全性和透明度融合。 Covalent Network&#xff08;CQT&#xff09;正位于这两项互补技…

day11【网络编程】

day11【网络编程】 主要内容 软件架构CS&#xff0f;BS网络通信三要素TCP通信Socket套接字ServerSocket 目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议下字符串数据传输程序 能够理解TCP协议下文件上传案例 能够理解TCP协议下案例2 第一…

dockers拉取MySQL及Redis并挂载文件

目录 一 . MySQL拉取 1、进入 MySQL 容器内部。 2、登录 MySQL。 3、修改远程连接 4、刷新 二 . Redis拉取 1 . redis/conf中新建文件redis.conf&#xff0c;内容如下&#xff1a; 2 . 容器运行 一 . MySQL拉取 docker run -d --restartalways --name mysql \ -v /…

基于Spring Boot的中医学习服务管理系统

摘 要 随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存…

【拓扑排序】有向图的拓扑排序

问题描述 给定一个 n 个点 m 条边的有向图&#xff0c;点的编号是 1 到 n&#xff0c;图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列&#xff0c;如果拓扑序列不存在&#xff0c;则输出 −1。 若一个由图中所有点构成的序列 A 满足&#xff1a;对于图中的每条…

超长期特别国债来了!你想了解的都在这里!

今年全国两会&#xff0c;超长期特别国债成为广受关注的热点话题之一。政府工作报告在“积极的财政政策要适度加力、提质增效”总体要求下&#xff0c;明确重要增量举措&#xff1a;从今年开始拟连续几年发行超长期特别国债&#xff0c;专项用于国家重大战略实施和重点领域安全…

深入解析Go语言`errors`库:提升你的错误处理技能

深入解析Go语言errors库&#xff1a;提升你的错误处理技能 引言Go的错误处理简介错误作为值error接口简单错误处理示例 errors包概览创建错误错误格式化错误检查示例&#xff1a;错误检查 创建和使用自定义错误定义自定义错误类型使用自定义错误错误包装错误处理的灵活性 错误检…

【python 装饰器 - 重试】做一个简易重试装饰器,如果函数执行错误则会自动重新执行,可设置重试次数,对爬虫比较友好

文章日期&#xff1a;2024.03.19 使用工具&#xff1a;Python 类型&#xff1a;装饰器 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xff09;&…

数据库国产化探究及升级改造过程指导

一、背景 在信创“自主可控”的浪潮下&#xff0c;政企行业首当其冲&#xff0c;基于国产化信创的要求&#xff0c;本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制&#xff1b;能用国产化替代的评估后尽可替代割接&#xff0c;本期针对传统数据库…

控制学习_正弦波无刷直流力矩电机建模、控制带宽讨论与选择

无刷电机通过电子换向器实现定子的磁场旋转&#xff0c;去电刷后使用寿命大幅提升&#xff0c;是现在更流行的选择。三相无刷电机则是无刷电机中比较流行的一款。三相无刷电机的驱动方式有多种&#xff0c;最简单的被称为梯形波驱动、方波驱动或正弦波驱动。而正弦波驱动技术可…

SpringBoot 监控 SQL 运行情况

1 基本概念 2 添加依赖 3 配置相关属性 4 sql监控 5 慢sql记录 6 spring 监控 7 去 Ad&#xff08;广告&#xff09; 8 获取 Druid 的监控数据 1 基本概念 Druid 是Java语言中最好的数据库连接池。 虽然 HikariCP 的速度稍快&#xff0c;但是&#xff0c;Druid能够提…

Elasticsearch:使用 OpenAI、LangChain 和 Streamlit 的基于 LLM 的 PDF 摘要器和 Q/A 应用程序

嘿&#xff01; 您是否曾经感觉自己被淹没在信息的海洋中&#xff1f; 有这么多的书要读&#xff0c;而时间却这么少&#xff0c;很容易就会超负荷&#xff0c;对吧&#xff1f; 但猜猜怎么了&#xff1f; 你可以使用大型语言模型创建自定义聊天机器人&#xff0c;该模型可以帮…

极客早报第2期:93年副所长入警9年满头白发;黑马情侣提车;早上六点起床跟八点起床的区别

一分钟速览新闻点&#xff01; 每日简报 93年副所长入警9年满头白发黑马情侣提车早上六点起床跟八点起床的区别男子被流浪猫绊倒投喂者赔24万鸡骨泥运用于淀粉肠中不算违规路边卖淀粉肠阿姨主动出示声明书她和智障哥哥唯一合照是别人拍的卫健委回应卖血猝死广西辟谣“核潜艇生…

01.Linked-List-Basic

1. 链表简介 1.1 链表定义 链表&#xff08;Linked List&#xff09;&#xff1a;一种线性表数据结构。它使用一组任意的存储单元&#xff08;可以是连续的&#xff0c;也可以是不连续的&#xff09;&#xff0c;来存储一组具有相同类型的数据。 简单来说&#xff0c;「链表」…

2.1(TCP)

TCP—传输控制协议 是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。 特点&#xff1a; TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议每一条TCP连接有且只能有两个端点。可靠、有序、无丢弃和不重复。TCP协议提供全双工通讯。 发送缓存 存放发送方…

phpStudy安装thinkCMF8时,如何解决服务器rewrite和APIrewrite不支持的问题

解决步骤&#xff1a; 一&#xff1a;服务器rewrite 点击后面的问号跳转到官方文档链接&#xff1a; 复制红框内的代码 打开phpstudy&#xff0c;找到配置的站点&#xff0c;点击管理&#xff0c;找到伪静态 点击确认保存即可。 phpstudy会自动重启站点。 此时&#xff0c;…

Hive-技术补充-ANTLR词法语法分析

一、背景 要清晰的理解一条Hql是如何编译成MapReduce任务的&#xff0c;就必须要学习ANTLR。下面是ANTLR的官方网址&#xff0c;下面让我们一起来跟着官网学习吧 ANTLR 二、ANTLR元语言 1、启发 静下来想想&#xff0c;一门语言有什么组成&#xff0c;比如我们的中文&…

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI…

基于Logstash的动态表同步方案

文章目录 引言I 动态表的同步1.1 利用数据库函数进行动态表名拼接1.2 利用shell脚步进行动态日期表名拼接1.3 方案小结II 增量同步III 同步多数据表引言 基于Logstash由SQLServer向Elasticsearch同步数据,兼容SQL Server 2005,在连接数据库时,url后面加上一个encrypt=false或…