📌  相关文章
📜  所有元素都是 K 的因子的最长子数组(1)

📅  最后修改于: 2023-12-03 15:09:59.224000             🧑  作者: Mango

所有元素都是 K 的因子的最长子数组

给定一个整数数组 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)$。除了记录变量外并没有使用额外的空间。