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

算法---缺失的第一个正数

题目

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]
输出:3
示例 2:输入:nums = [3,4,-1,1]
输出:2
示例 3:输入:nums = [7,8,9,11,12]
输出:1提示:1 <= nums.length <= 5 * 105
-231 <= nums[i] <= 231 - 1

解决思路

借用map 就可以实现,但是如果不借用map,在原空间上,也可以实现,不过想要使用原来的数据,会有侵略性,会把原来的数据修改掉。

解决方法

方法一:
在这里插入图片描述

    fun firstMissingPositive(nums: IntArray): Int {val size = nums.sizenums.forEachIndexed { index, i ->if (i <= 0) {nums[index] = size + 1}}nums.forEachIndexed { index, i ->if (i.absoluteValue in 1..size && nums[i.absoluteValue -1]  > 0) {nums[i.absoluteValue -1] = -nums[i.absoluteValue -1]}}nums.forEachIndexed { index, i ->if (i >= 0){return index + 1}}return size + 1}

方法二:

    fun firstMissingPositive2(nums: IntArray): Int {val size = nums.sizevar temp = 0nums.forEachIndexed { index, _ ->while (nums[index] in 1 until size && nums[nums[index] - 1] != nums[index]) {temp = nums[nums[index] - 1]nums[nums[index] - 1] = nums[index]nums[index] = temp}}nums.forEachIndexed { index, i ->if (index != i - 1) {return index + 1}}return size + 1}

总结

算法是很看一个人的思维逻辑的,所以很多都会考验一下算法。
算法确实重要。
做了快一年算法了,确实 学习如园中小草,不见其增,日有所长
面试遇到算法就很轻松就过了

相关文章:

算法---缺失的第一个正数

题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1&#xff1a;输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 示例 2&#xff1a;输入&#xff1a;nums …...

【算法与数据结构】--算法应用--算法和数据结构的案例研究

一、项目管理中的算法应用 在项目管理中&#xff0c;算法和数据结构的应用涉及项目进度、资源分配、风险管理等方面。以下是一些案例研究&#xff0c;展示了算法在项目管理中的实际应用&#xff1a; 项目进度管理&#xff1a; 甘特图算法&#xff1a;甘特图是一种项目进度管理…...

java如何获取调用接口的ip?

获取调用者的ip 场景&#xff1a;想知道哪个ip访问的某个接口时&#xff0c;就需要打印出来看看&#xff0c;这时就可以使用这个方法了。 案例&#xff1a; //HttpServletRequest 入参加上,请求对象public ForkResponse queryXXX(RequestBody XXXX xxxx, HttpServletRequest …...

ubuntu 18 更新git版本到 2.80.1

前言 使用gitlab的时候&#xff0c;发现下面这条语句不能用 git init --initial-branch XXX查看git version git version下载 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.38.1.tar.gz 或者 https://git-scm.com/download/linux 或者去github上面下载…...

测试C#调用Aplayer播放视频(2:VideoPlayer源码学习)

参考文献1除了介绍Aplayer组件的用法之外&#xff0c;还提供有demo下载以供学习&#xff0c;本文学习并记录其中的使用方式。   VideoPlayer项目使用C#在VS2013开发&#xff0c;其解决方案中包括VideoPlayer和VideoPlayer两个小项目&#xff0c;前者基于.net framework4.0&am…...

YOLOv5 分类模型的预处理

YOLOv5 分类模型的预处理 flyfish 版本 6.2 将整个代码简化成如下代码 imgsz224 file "/home/a/Pictures/1.jpg" transforms classify_transforms(imgsz) im cv2.cvtColor(cv2.imread(file), cv2.COLOR_BGR2RGB) print(im.shape)im transforms(im) print(im.…...

25 行为型模式-备忘录模式

1 备忘录模式介绍 备忘录模式(memento pattern)定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态. 2 备忘录模式原理 3 备忘录模式实现 /*** 发起人角色**/ public class Originator {private Strin…...

物联网AI MicroPython传感器学习 之 SHT3X温湿度传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 Sensirion SHT3x-DIS湿度和温度传感器基于CMOSens传感器芯片&#xff0c;更加智能、可靠&#xff0c;精度更高。SHT3x-DIS具有增强的信号处理能力、两个独特的用户可选I2C地址&#xff0c;通信…...

int* p = new int[5]; int *p = new int[5]();delete[] p; delete p;区别是什么?

int main() {int *p new int[5]; // 分配包含5个整数的数组内存// 初始化数组元素for (int i 0; i < 5; i) {p[i] i * 10;}// 试图使用 delete p; 来释放数组内存delete p;delete[] p;// 打印数组元素for (int i 0; i < 5; i) {std::cout << "p[" &l…...

数据结构|基础知识定义

1.值传递、地址传递、值返回、地址返回 1> 值传递&#xff1a;普通变量作为函数参数传递是单向的值传递&#xff0c;只是将实参的值复制一份给形参变量&#xff0c;形参的改变不会影响实参的值&#xff0c;因为所在内存空间不同 如果传递的是地址&#xff0c;被调函数使用指…...

物联网AI MicroPython传感器学习 之 MFRC522 RFID射频IC卡感应模块

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 MFRC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片&#xff0c;其特点低电压、低成本、体积小的非接触式读写芯片。MFRC522支持MIFARE系列更高速的非接触式通信&#xff0c;双向数据…...

搭建ES集群

目录 前言 搭建ES集群 集群状态监控 分片备份 节点角色 脑裂问题 分布式存储 分布式查询 故障转移 前言 单机的ES做数据存储必然会面临两个问题&#xff1a;海量数据存储问题、单机故障问题 海量数据存储问题&#xff1a;将索引库从逻辑上拆分为N个分片(shard)&…...

Tomcat的日志接收文件catalina.out nohup.out说明

catalina.out用于接收如下情况的日志&#xff1a; catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr)&#xff0c;这是在tomcat的启动脚本里指定的&#xff0c;如果没有修改的话stdout和stderr会重定向到这里。所以我们在应用里使用System.out打印的东西都会到这…...

手机ip地址切换后有什么影响

随着互联网的普及和人们对网络连接的需求不断增加&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。而在使用手机的过程中&#xff0c;手机ip地址的切换也成为了许多用户需要注意的问题。虎观代理小二二将探讨手机ip地址切换后可能产生的影响。 手机ip地址的含义及作…...

C++ 赋值运算重载,const成员,取地址及const取地址操作符重载

C 赋值运算重载&#xff0c;const成员&#xff0c;取地址及const取地址操作符重载 1. 赋值运算符重载1.1 运算符重载1.2 赋值运算符重载1.3 前置/--和后置/--重载 2. const成员3. 取地址及const取地址操作符重载 所属专栏&#xff1a;C“嘎嘎" 系统学习❤️ &#x1f680;…...

嵌入式Linux系统的闪存设备和文件系统学习纪要

嵌入式Linux系统的闪存设备和文件系统学习纪要 Linux下的文件系统结构如下&#xff1a; NAND Flash 是一种非易失性存储器&#xff08;Non-Volatile Memory&#xff09;&#xff0c;常用于闪存设备和固态硬盘&#xff08;SSD&#xff09;中。以下是几种常见的 NAND Flash 种类&…...

android 8.1 disable unsupported sensor

如果device不支持某种sensor,可以在android/frameworks/base/core/java/android/hardware/SystemSensorManager.java里将其disabled掉。以disable proximity sensor为例。 public SystemSensorManager(Context context, Looper mainLooper) {synchronized(sLock) {if (!sNativ…...

二、类与对象(一)

1 面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。以洗衣服为例&#xff0c;通常洗衣服会经历以下过程&#xff1a; 而C是基于面向对象的&#xff0c;关注的是对象&#xff0c…...

写给所有的程序员,或者努力生活的你。

朋友们&#xff0c;好好休息&#xff0c;意味着好好锻炼&#xff0c;好好睡觉&#xff0c;好好学习&#xff0c;学习可以是功利的&#xff0c;需要有规划的&#xff0c;有执行能力&#xff0c;有反馈奖励机制的&#xff0c;也可以无用之用方为大用&#xff08;比如take shit的时…...

pytorch 笔记:GRU

1 介绍 对于输入序列中的每个元素&#xff0c;每一层都计算以下函数&#xff1a; ht​ 是t时刻 的隐藏状态xt​ 是t时刻 的输入ht−1​ 是 t-1时刻 同层的隐藏状态或 0时刻 的初始隐藏状态rt​,zt​,nt​ 分别是重置门、更新门和新门。σ 是 sigmoid 函数∗ 是 Hadamard 乘积。…...

一文讲透|高效论文写作全流程AI论文工具推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;以下工具按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。2026年&am…...

UI-TARS Desktop 深度解析:字节跳动 34K Star 的多模态 AI Agent 栈

&#x1f5a5;️ UI-TARS Desktop 深度解析&#xff1a;字节跳动 34K Star 的多模态 AI Agent 栈 字节跳动 Bytedance 出品 | 34.3K GitHub Stars | Apache 2.0 | 超越 Claude Computer Use &#x1f525; 前言&#xff1a;当 AI 学会操作电脑 2025 年 1 月&#xff0c;字节跳…...

用Python从零搭建GridWorld环境:手把手教你实现值迭代与策略迭代(附完整代码)

用Python从零搭建GridWorld环境&#xff1a;手把手教你实现值迭代与策略迭代&#xff08;附完整代码&#xff09;在强化学习领域&#xff0c;GridWorld就像编程界的"Hello World"&#xff0c;是理解基础算法的最佳试验场。不同于理论推导的抽象&#xff0c;亲手构建一…...

RTX51多任务环境下printf安全调用方案解析

1. RTX51多任务环境下printf的安全调用方案在RTX51实时操作系统中&#xff0c;多个任务同时调用标准库函数printf时会出现"多重调用警告"(Warning 15: MULTIPLE CALL TO SEGMENT)。这个看似简单的调试输出问题&#xff0c;实际上涉及RTOS任务调度、函数重入、内存管理…...

XGBoost处理缺失值:构建面向天文大数据的极冷矮星智能发现系统

1. 项目概述&#xff1a;当机器学习遇见“暗弱”的宇宙居民在广袤的宇宙中&#xff0c;除了那些明亮耀眼的主序星和星系&#xff0c;还存在着一个庞大而“低调”的群体——极冷矮星。它们涵盖了光谱型晚于M6的恒星&#xff08;如M型矮星&#xff09;以及质量不足以点燃稳定氢聚…...

别再手动调UV了!用UE5的WAT世界对齐纹理,5分钟搞定雪地井盖无缝融合

别再手动调UV了&#xff01;用UE5的WAT世界对齐纹理&#xff0c;5分钟搞定雪地井盖无缝融合雪地里一个突兀的井盖&#xff0c;石块与地面材质接缝处的生硬过渡&#xff0c;这些细节往往成为破坏场景沉浸感的"元凶"。传统UV调整需要美术师逐个物体匹配贴图坐标&#x…...

RAGFlow源码解析-4、文档处理(deepdoc)(第二周)

一、文档解析器工厂架构详解 1.1 deepdoc/parser/init.py解析器工厂完整解析 代码完整解析(40行) # Licensed under the Apache License, Version 2.0 (the "License"); # you may obtain a copy of the License at # # http://www.apache.org/licenses/LIC…...

共有云环境redis的热key怎么处理

共有云Redis热key处理方案共有云Redis常见形态&#xff1a;集群分片、读写分离实例&#xff0c;业务跑在ECS、ACK容器上&#xff0c;具备弹性扩容、自带监控诊断、一键启停能力。一、云上专属&#xff1a;快速定位热key不用自己写脚本抓取&#xff0c;直接用平台工具排查1、控制…...

量子计算硬件指纹识别:从噪声特性到设备认证

1. 量子计算中的硬件指纹识别&#xff1a;从错误校正到设备认证量子计算机的噪声特性一直被视为阻碍其可靠运行的主要障碍。但有趣的是&#xff0c;这些看似有害的噪声特征&#xff0c;实际上可能成为每台量子设备的"身份证"。就像人类的指纹具有唯一性一样&#xff…...

为什么Rotating-machine-fault-data-set是机械故障诊断研究的必备资源?

为什么Rotating-machine-fault-data-set是机械故障诊断研究的必备资源&#xff1f; 【免费下载链接】Rotating-machine-fault-data-set Open rotating mechanical fault datasets (开源旋转机械故障数据集整理) 项目地址: https://gitcode.com/gh_mirrors/ro/Rotating-machin…...