如何做自己的淘宝优惠券网站,网站建设与维护新的体会,上海网站建设机构,品牌网站建设小7a蝌蚪#x1f381;#x1f449;点击进入文心快码 Baidu Comate 官网#xff0c;体验智能编码之旅#xff0c;还有超多福利#xff01;#x1f381; #x1f50d;【大厂面试真题】系列#xff0c;带你攻克大厂面试真题#xff0c;秒变offer收割机#xff01; ❓今日问题点击进入文心快码 Baidu Comate 官网体验智能编码之旅还有超多福利 【大厂面试真题】系列带你攻克大厂面试真题秒变offer收割机 ❓今日问题在未排序的整数数组找到最小的缺失正整数 ❤️一起看看文心快码Baidu Comate给出的答案吧如果这个问题你也会也可以在评论区写出你的答案哦 Comate为了找到未排序整数数组中的最小缺失正整数同时满足时间复杂度为 O(n) 和空间复杂度为 O(1) 的要求我们可以使用原地哈希的方法。这个方法主要基于以下思路忽略非正整数由于我们要找的是最小的缺失正整数因此可以忽略数组中的所有非正整数即负数和零。原地哈希我们将数组中的每个正整数 x 放到数组索引为 x-1 的位置上如果 x 在数组范围内。例如如果数组中有一个值为 3 的元素我们尝试将它放到索引 2 的位置上。这个过程可能涉及到多次交换因为原本在索引 2 的位置上可能有其他的数。寻找缺失的数在进行了原地哈希之后我们遍历数组第一个不满足“数组索引加 1 等于数组值”的位置对应的“索引加 1”就是最小的缺失正整数。如果所有位置都满足这个条件那么最小的缺失正整数就是数组长度加 1。下面是这个算法的 Python 实现def find_smallest_missing_positive(nums):n len(nums)# 第一步原地哈希for i in range(n):while 1 nums[i] n and nums[nums[i] - 1] ! nums[i]:# 交换位置将 nums[i] 放到它应该在的位置上nums[nums[i] - 1], nums[i] nums[i], nums[nums[i] - 1]# 第二步寻找缺失的数for i in range(n):if nums[i] ! i 1:return i 1# 如果数组是完整的1, 2, 3, ..., n则返回 n 1return n 1# 示例
nums [3, 4, -1, 1, 2, 5, 7]
print(find_smallest_missing_positive(nums)) # 输出应为 6
在这个示例中数组 [3, 4, -1, 1, 2, 5, 7] 经过原地哈希后正整数会尽可能地被放到它们“正确”的位置上。最终我们发现索引 5 的位置上的数是 7而不是应该的 6因此 6 就是最小的缺失正整数。 如果您有企业解决方案的相关疑虑可以通过百度文心快码企业服务咨询问卷填写信息我们会尽快安排专业人员与您取得联系 点击进入文心快码 Baidu Comate 官网体验智能编码之旅还有超多福利