已解决
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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!