返回顶部

2760

给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold 。

请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 (0 <= l <= r < nums.length) 且满足以下条件的 最长子数组 :

  • nums[l] % 2 == 0
  • 对于范围 [l, r - 1] 内的所有下标 i ,nums[i] % 2 != nums[i + 1] % 2
  • 对于范围 [l, r] 内的所有下标 i ,nums[i] <= threshold

以整数形式返回满足题目要求的最长子数组的长度。

注意:子数组 是数组中的一个连续非空元素序列。

 

示例 1:

输入:nums = [3,2,5,4], threshold = 5
输出:3
解释:在这个示例中,我们选择从 l = 1 开始、到 r = 3 结束的子数组 => [2,5,4] ,满足上述条件。
因此,答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。

class Solution(object):
    def longestAlternatingSubarray(self, nums, threshold):
        """
        :type nums: List[int]
        :type threshold: int
        :rtype: int
        """
        l = len(nums) 
        ans = 0
        count = 0
        for j in range(l):
            count = 0
            if nums[j]%2==0 and nums[j]<=threshold:
                for i in range(j,l):
                    if (i-j)%2==0 and nums[i]%2 == 0 and nums[i]<=threshold:
                        count = count + 1
                        ans=max(ans,count)
                    elif (i-j)%2!=0 and nums[i]%2 != 0 and nums[i]<=threshold:
                        count = count + 1
                        ans=max(ans,count)
                    else:
                        break
            else:
                continue
        return ans            
            

 

posted @ 2023-11-16 21:16  YuhangLiuCE  阅读(14)  评论(0编辑  收藏  举报