当前位置:首页 > 编程笔记 > 正文
已解决

25期代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

来自网友在路上 181881提问 提问时间:2023-10-27 06:16:54阅读次数: 81

最佳答案 问答题库818位专家为你答疑解惑

目录

  • 977.有序数组的平方
    • 思路
    • 代码
  • 209.长度最小的子数组
    • 代码
  • 59.螺旋矩阵II
    • 代码

977.有序数组的平方

链接

思路

双指针。

数组平方的最大值就在数组的两端,不是最左边就是最右边。所以我们可以用一左一右两个指针,来获取最大值,再放入到我们的结果集。

代码

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:l, r, i = 0, len(nums) - 1, len(nums) - 1res = [0 for _ in range(len(nums))]while l <= r:if nums[l] ** 2 < nums[r] ** 2:res[i] = nums[r] ** 2r -= 1else:res[i] = nums[l] ** 2l += 1i -= 1return res

209.长度最小的子数组

链接

滑动窗口

代码

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:l, r, i = 0, len(nums) - 1, len(nums) - 1res = [0 for _ in range(len(nums))]while l <= r:if nums[l] ** 2 < nums[r] ** 2:res[i] = nums[r] ** 2r -= 1else:res[i] = nums[l] ** 2l += 1i -= 1return res

59.螺旋矩阵II

链接

代码

class Solution:def generateMatrix(self, n: int) -> List[List[int]]:res = [[0] * n for _ in range(n)]startx, starty = 0, 0loop, mid = n // 2, n // 2count = 1for offset in range(1, loop + 1):#upper left to rightfor i in range(starty, n - offset):res[startx][i] = countcount += 1#up to bottomfor i in range(startx, n - offset):res[i][n - offset] = countcount += 1# from bottom right to leftfor i in range(n - offset, starty, -1):res[n - offset][i] = countcount += 1# from bottom to upfor i in range(n - offset, startx, -1):res[i][starty] = countcount += 1startx += 1starty += 1if n % 2 != 0:res[mid][mid] = countreturn res
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"25期代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II":http://eshow365.cn/6-25746-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!