977.有序数组的平方
给你一个按 非递减顺序排序的整数数组nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
双指针
思路:
1.有序数组,最大值在两侧 出现,使用两个指针分别从两侧移动
2.要求从小到大排列,因此写入result数组需要从最大索引开始
3.跳出条件,i<=j, 若是i<j,则当i=j时跳出,遗漏该处元素
4.需要根据nums[i],nums[j]的平方移动i,j,采用while
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
res = [0 for _ in range(len(nums))]
k = len(nums) - 1
i, j = 0, k
while i<=j:
if(nums[i] * nums[i] > nums[j] * nums[j]):
res[k] = nums[i] * nums[i]
i += 1
else:
res[k] = nums[j] * nums[j]
j -= 1
k -= 1
return res
209.长度最小的子数组
给定一个含有 n个正整数的数组和一个正整数 targe。找出该数组中满足其和 ≥ target的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr],并返回其长度。如果不存在符合条件的子数组,返回0 。
滑动窗口
思路:
1.for循环 j表示终止位置,起止位置动态移动策略
2.找到满足sums >= target,移动起始位置
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
i = 0
sum = 0
result = float('inf')
for j in range(len(nums)):
sum += nums[j]
while(sum>=target):
subL = j - i + 1
result = min(subL,result)
sum -= nums[i]
i += 1
return 0 if result == float("inf") else result
模板
# 最小滑动窗口
while j < len(nums):
#判断[i, j]是否满足条件
while 满足条件:
#不断更新结果(注意在while内更新!)
i += 1 #(最大程度的压缩i,使得滑窗尽可能的小)
j += 1
# 最大滑动窗口
while j < len(nums):
#判断[i, j]是否满足条件
while 不满足条件:
i += 1 #(最保守的压缩i,一旦满足条件了就退出压缩i的过程,使得滑窗尽可能的大)
#不断更新结果(注意在while外更新!)
j += 1
59.螺旋数组II
给你一个正整数 n,生成一个包含 1到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 nxn正方形矩阵matrix。
思路 :模拟顺时针画矩阵的过程:
- 填充上行从左到右
- 填充右列从上到下
- 填充下行从右到左
- 填充左列从下到上
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
ans = [[0 for _ in range(n) ] for _ in range(n)]
up, down, left, right = 0, n - 1, 0, n - 1
num = 1
while True:
for i in range(left, right+1):
ans[up][i] = num
num += 1
up += 1
if up > down:
break
for i in range(up, down + 1):
ans[i][right] = num
num += 1
right -= 1
if right < left:
break
for i in range(right,left-1,-1):
ans[down][i] = num
num += 1
down -= 1
if down < up:
break
for i in range(down, up-1,-1):
ans[i][left] = num
num += 1
left += 1
if left > right:
break
return ans
文章介绍了两种基于Python的算法解决方案:一是对有序数组进行平方操作并保持非递减排序,采用双指针方法;二是寻找数组中和大于等于目标值的最短连续子数组,利用滑动窗口策略。同时提到了螺旋数组的生成方法,通过模拟顺时针填充过程实现。

135

被折叠的 条评论
为什么被折叠?



