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

LeetCode 热题100-17 缺失的第一个正数

缺失的第一个正数

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

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:

输入:nums = [1,2,0]
输出:3
解释:范围 [1,2] 中的数字都在数组中。

示例 2:

输入:nums = [3,4,-1,1]
输出:2
解释:1 在数组中,但 2 没有。

示例 3:

输入:nums = [7,8,9,11,12]
输出:1
解释:最小的正数 1 没有出现。

提示:

  • 1 <= nums.length <= 10e5
  • -2e31 <= nums[i] <= 2e31 - 1

可惜捏,只能想到用hashmap做个o(n)额外空间的做...(开辟空间了但是速度快hhh

class Solution:def firstMissingPositive(self, nums: List[int]) -> int:  # Me!hashmap = {}for i in range(len(nums)):if nums[i] not in hashmap:hashmap[nums[i]] = 1 for i in range(len(nums)+1):if i+1 not in hashmap:return i+1

想不到O n 1 的做法,看看大佬的做法吧,原地数组,将元素交换至(元素-1)下标的位置 

随后从头往后寻找对应不起来的位置,然后返回就好了

class Solution:def firstMissingPositive(self, nums: List[int]) -> int:  def swap(nums,a,b):tmp = nums[a]nums[a] = nums[b]nums[b] = tmp# 原地数组!nbfor i in range(len(nums)):while 1<=nums[i]<=len(nums) and nums[i]!=nums[nums[i]-1]:swap(nums,nums[i]-1,i)for i in range(len(nums)):if nums[i]!=i+1:return i+1return len(nums)+1

http://www.lryc.cn/news/431076.html

相关文章:

  • 基于CloudflareSpeedTest项目实现git clone加速
  • 对与单纯post方法写项目的修改成baseservlet方法
  • 北京地铁换乘站人流量监控与图像识别技术优化
  • Day16_0.1基础学习MATLAB学习小技巧总结(16)——元胞数组
  • C#自定义控件的放置与拖动
  • python circular import python循环导入问题
  • kafka集群安装
  • SQL通用语法、SQL分类以及DDL
  • 静态链接和动态链接
  • 构建智能门禁安防系统:树莓派 4B、OpenCV、SQLite 和 MQTT 的应用(代码示例)
  • 基于 Konva 实现Web PPT 编辑器(二)
  • 【开源免费】基于SpringBoot+Vue.JS在线竞拍系统(JAVA毕业设计)
  • Qt TabWidget添加多个窗口,实现分页窗体布局
  • HarmonyOS开发实战( Beta5版)合理使用动画丢帧规范实践
  • 基于BiLSTM-CRF的医学命名实体识别研究(下)模型构建
  • 5.sklearn-朴素贝叶斯算法、决策树、随机森林
  • VMWARE VCENTER6.7 VCSA通过Web5480进行版本升级
  • GIT使用常见问题
  • 内核链表
  • 行空板上YOLO和Mediapipe视频物体检测的测试
  • 【Spring Boot 3】【Web】ProblemDetail
  • 市占率最高的显示器件,TFT_LCD的驱动系统设计--Part 1
  • Linux基础 -- 获取CPU负载信息
  • Django 中的用户界面 - 创建速度计算器
  • spring security 如何解决跨域的
  • 日志系统前置知识
  • 【Spring Boot 3】【Web】全局异常处理
  • Dcoker 运行es
  • 7系列FPGA HR/HP I/O区别
  • sqli-labs靶场通关攻略(五十一到六十关)