📅  最后修改于: 2023-12-03 15:09:59.224000             🧑  作者: Mango
给定一个整数数组 nums
和一个整数 k
,请找出该数组中所有元素都是 k
的因子的最长连续子数组,并返回该子数组的长度。
遍历整个数组,记录当前连续因子为 factor
的个数,若出现 nums[i]
不是 k
的因子,则将 factor
置为 0。同时,记录当前最长的因子连续子数组长度 curr_len
和最长的因子连续子数组长度 max_len
。
def maxSubArray(nums: List[int], k: int) -> int:
factor = curr_len = max_len = 0
for num in nums:
if num % k == 0:
factor += 1
curr_len += 1
max_len = max(max_len, curr_len)
else:
factor = curr_len = 0
return max_len
时间复杂度:$O(n)$,其中 $n$ 是数组的长度。
空间复杂度:$O(1)$。除了记录变量外并没有使用额外的空间。