LeetCode100-41缺失的第一个正数
本文基于各个大佬的文章
上点关注下点赞,明天一定更灿烂!
前言
Python基础好像会了又好像没会,所有我直接开始刷leetcode一边抄样例代码一边学习吧。本系列文章用来记录学习中的思考,写给自己看的,也欢迎大家在评论区指导~
您的每一条评论都会让我更有学习的动力。
一、分析题目
二、思路以及代码
困难级别,看着有点害怕啊。
刚开始看题目描述不太了解题意我说实话,看到样例才知道什么意思。不过我脑子里没有弹出任何思路,一团浆糊呢。
这个题目的关键是如何才能找出这个最小的正整数,其实参考示例我们可以知道这个最小正整数一定小于数组的长度。我们可以借助哈希表,当数组是【1,2,3,4,5】的时候索引是【0,1,2,3,4】,索引和值的关系是nums[i]=i+1,我们也可以借助这个想法来解决这个题目,把正确的数值放到正确的索引上。
class Solution:def firstMissingPositive(self, nums: List[int]) -> int:n = len(nums)# 将每个数放到正确位置for i in range(n):# 只处理在[1,n]范围内的数while 1 <= nums[i] <= n and nums[nums[i] - 1] != nums[i]:# 将nums[i]放到正确位置nums[i]-1correct_pos = nums[i] - 1# 交换nums[i]和nums[correct_pos]nums[i], nums[correct_pos] = nums[correct_pos], nums[i]#寻找缺失的最小正整数for i in range(n):if nums[i] != i + 1:return i + 1#如果所有位置都正确,返回n+1return n + 1
三、本题收获
哈希表还是很好用滴
总结
只会打暴力,基础一团糟,明天再学吧老铁,别真学会了。