网站备案后 还是需要再备案吗,哪家网站建设服务好啊,网站域名和服务器到期,网站制作能赚多少钱目录链接#xff1a;
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目#xff1a;
https://github.com/September26/java-algorithms 原题链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 描述#xff1a;
给你一个下… 目录链接
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目
https://github.com/September26/java-algorithms 原题链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 描述
给你一个下标从 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 是满足题目要求的最大长度。
示例 2
输入nums [1,2], threshold 2
输出1
解释
在这个示例中我们选择从 l 1 开始、到 r 1 结束的子数组 [2] 。
该子数组满足上述全部条件。可以证明 1 是满足题目要求的最大长度。示例 3
输入nums [2,3,4,5], threshold 4
输出3
解释
在这个示例中我们选择从 l 0 开始、到 r 2 结束的子数组 [2,3,4] 。
该子数组满足上述全部条件。
因此答案就是这个子数组的长度 3 。可以证明 3 是满足题目要求的最大长度。 提示
1 nums.length 100 1 nums[i] 100 1 threshold 100 解题思路
这题虽然是简单题但是如果想使用O(n)的是时间复杂度来解决其实并没有的简单。
这题求符合条件的数组的最大长度那么很自然的就可以联想到滑动区间设置left和right来确定一个区间这个区间是就是符合的。
首先移动left如果起点不符合要求则往后移动
如果起点符合要求则移动right看这个区间可以多大范围。
移动right的过程中如果nums[right] threshold不符合则更新left和right的位置。
如果nums[right - 1] % 2 nums[right] % 2则也更新left和right和上面不通的时候此时当前位置left还是可以使用当前位置的但是right需要1。 代码
class Solution {
public:int longestAlternatingSubarray(vectorint nums, int threshold){int maxLength 0;int left 0;int right 0;while (left nums.size() right nums.size()){if (nums[left] % 2 ! 0){left;continue;}if (right left){right left;}while (right nums.size()){if (nums[right] threshold){left right;break;}if (left right (nums[right - 1] % 2 nums[right] % 2)){left right;right;break;}right;maxLength max(right - left, maxLength);}}return maxLength;}
};