秋招刷题冲冲冲 day1

no.1

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
思路:
n = len(nums) 暴力解就直接排序,然后扫一遍1到n哪个数第一次未出现,都出现就是n+1,得出结果,但是排序复杂度最好O(logn)
需要把数组整理成比较有序的状态,nums[i] == i + 1(i从0开始),然后扫一遍
遍历一边,遇到没有在正确位置上(nums[i] == i + 1)就和正确位置(nums[i])交换,如果数字超出1到n就跳过,但是如果遇到有重复数字(nums[i] == nums[nums[i] - 1])的情况,也要跳过

no.2

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
思路:
遍历整个矩阵,找到0就把该行列的数都置为0,但是要另外一个数组记录一下,把原来不是0置为0的位置记录一下,否则后续遍历会在前面置为0的位置重复操作

posted @ 2025-08-21 17:38  咖啡加油条  阅读(1)  评论(0)    收藏  举报