2022-8-28

40 阅读1分钟

算法

  1. 难点在于时间复杂度O(n),空间复杂度为常数
  2. 首先要明确,长度为N的数组没有出现的最小正整数一定要小于等于N+1
  3. 按照时间复杂度和空间复杂度的要求,一定要在原数组上打标记,且要利用数组有序的特性
  4. 先排除掉小于等于0的,设置为N+1,再遍历每个数是否在[1,N]区间,否则设置x-1的下标上的数为负数
  1. 这道题重要的是怎么处理边界问题
  2. 方法一:模拟顺时针旋转,设置一个长度为4的二维数组,分别表示右下左上,用一个指针循环,边界通过判断下一个数是否有值或大于n(因为所有数都大于0),直至遍历n^2
  3. 按层遍历,由外到内进行遍历,边界通过设置top,right,left,bottom来控制边界,每一层遍历后top++,right--,left++,bottom--

TS

yuque_diagram.jpg