思路:
该算法使用滑动窗口和计数器来判断每个长度为 ( k ) 的子数组是否满足连续递增的条件。遍历数组时,使用 cnt
记录当前连续递增的元素数。如果当前元素和前一个元素不连续递增,则将 cnt
重置为 1,否则增加 cnt
。当 cnt
大于等于 ( k ) 时,表示找到了一个满足条件的子数组,将该子数组的最大元素(即当前元素)存入结果数组。最终返回结果数组,未满足条件的子数组位置填 -1
。
from typing import List
class Solution:
def resultsArray(self, nums: List[int], k: int) -> List[int]:
n = len(nums)
cnt = 0 # 记录当前连续递增的长度
ans = [-1] * (n - k + 1) # 初始化结果数组为 -1
# 遍历数组,更新连续递增的计数和结果数组
for i in range(n):
# 检查当前元素是否与前一个元素连续递增
if i == 0 or nums[i] - nums[i - 1] != 1:
cnt = 1 # 如果不满足连续性,重置计数为 1
else:
cnt += 1 # 否则增加计数
# 如果当前连续递增的长度满足 k,更新结果数组
if cnt >= k:
ans[i - k + 1] = nums[i] # 将当前窗口的最大值(即 nums[i])写入结果中
return ans
标签:cnt,15,当前,nums,递增,元素,II,数组,打卡
From: https://blog.csdn.net/weixin_53420521/article/details/143588648