首页 > 其他分享 >力扣2760. 最长奇偶子数组

力扣2760. 最长奇偶子数组

时间:2023-11-16 12:13:41浏览次数:31  
标签:奇偶 nums index int 2760 示例 力扣 数组 threshold

给你一个下标从 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

代码为暴力,最优解应该是不回退滑动窗口。

 1 class Solution {
 2 public:
 3     int maximum = 0;
 4     int find_head(int index, vector<int> &nums, int threshold){
 5         for (;index < nums.size();++index){
 6             if (nums[index] <= threshold && nums[index] % 2 == 0){
 7                 return index;
 8             }
 9         }
10         return index;
11     }
12     int longestAlternatingSubarray(vector<int>& nums, int threshold) {
13         int index, count;
14         index = find_head(0, nums, threshold);
15         if (index < nums.size()){
16             maximum = 1;
17             count = 1;
18         }else{
19             return 0;
20         }
21         while (index < nums.size() - 1){
22             if (nums[index] <= threshold && nums[index+1] <= threshold && nums[index] % 2 != nums[index+1] % 2){
23                 count++;
24                 index++;
25                 maximum = max(count, maximum);
26             }else{
27                 maximum = max(count, maximum);
28                 index = find_head(index+1, nums, threshold);
29                 count = 1;
30             }
31         }
32         return maximum;
33     }
34 };

 

标签:奇偶,nums,index,int,2760,示例,力扣,数组,threshold
From: https://www.cnblogs.com/coderhrz/p/17835945.html

相关文章

  • 力扣 075
    LCR075.数组的相对排序给定两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。利用map计数,想的过......
  • 力扣-34-在排序数组中查找元素的第一个和最后一个位置
    一、题目力扣地址:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/二、解法思路:也是二分查找相关题目,详细解法看注释fromtypingimportListclassSolution:"""leetcode:34二分查找类题目,与传统二分查......
  • 力扣-35-搜索插入位置
    一、题目力扣地址:https://leetcode.cn/problems/search-insert-position/二、解法思路与标准的二分查找一直,唯一的区别为,若所需target不在nums中,需要找到insert的索引fromtypingimportListclassSolution:"""leetcode:35在二分法的基础上延伸,若无法找到......
  • 力扣-704-二分查找
    一、题目力扣链接:https://leetcode.cn/problems/binary-search/description/二、解法思路标准的二分查找题目,常规上有左闭右闭和左闭右开的解法1、左闭右闭classSolution:"""leetcode:704采用左闭右闭的方式,[left,right]区间的定义这就决定了二分法的代......
  • 函数奇偶性判断中的运算思路选择
    前言在判断函数的奇偶性时,我们一般常用的依据是由\(f(-x)=\pmf(x)\)来得到对应的结论,很少有人想到用其等价判断依据:\(f(-x)\pmf(x)=0\),尤其是涉及到指数型函数或对数型函数的奇偶性的判断时,更是蕴含了许多运算技巧,以下用例子说明;典例剖析判断\(f(x)=\cfrac{2^x-1}{2^x+1}......
  • 力扣 1460 脑筋急转弯
    1460.通过翻转子数组使两个数组相等对两个数组就行排序。依次对比,有不同则返回false。所有数字一样,那就一定可以翻转使得两个数组相等,翻转次数不同而已,总能达到。当有数字不一样,那一定不会相等。classSolution{public:boolcanBeEqual(vector<int>&target,vector<int>&a......
  • 力扣2578 排序后两个数依次选择
    2578. 最小和分割隔空依次取值,相加最小,原理暂不清楚,举例演示就可发现。classSolution{public:intsplitNum(intnum){intnum1=0,num2=0;vector<int>a;while(num){a.push_back(num%10);num/=10;}......
  • CF1304E 1-Trees and Queries(lca+树上前缀和+奇偶性)
    题目二话不说,直接按题意模拟暴搜,当然\(O(nq)\)的复杂度显然是寄了的。不过,在模拟的过程中,我在链式前向星的删边中居然一开始错了,还是要mark一下以后注意。voiddel(intx,intpre){ e[top].to=e[top].next=0; h[x]=pre;//h[x]=0;<---tip}intmain(){ ......
  • 力扣2293 暴力模拟
    2293. 极大极小游戏给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。对 nums 执行下述算法:设 n 等于 nums 的长度,如果 n==1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n/2 ,下标从 0 开始。对于满足 0<=i<n/2 的......
  • 力扣2406. 将区间分为最少组数
    给你一个二维整数数组 intervals ,其中 intervals[i]=[lefti,righti] 表示 闭 区间 [lefti,righti] 。你需要将 intervals 划分为一个或者多个区间 组 ,每个区间 只 属于一个组,且同一个组中任意两个区间 不相交 。请你返回 最少 需要划分成多少个组。如果......