845. 数组中的最长山脉-力扣双百代码

845. 数组中的最长山脉-力扣双百代码

把符合下列属性的数组 arr 称为 山脉数组 :

arr.length >= 3
存在下标 i(0 < i < arr.length - 1),满足arr[0] < arr[1] < ... < arr[i - 1] < arr[i]arr[i] > arr[i + 1] > ... > arr[arr.length - 1]

给出一个整数数组 arr,返回最长山脉子数组的长度。如果不存在山脉子数组,返回 0 。

示例 1:

输入:arr = [2,1,4,7,3,2,5]
输出:5
解释:最长的山脉子数组是 [1,4,7,3,2],长度为 5。

示例 2:

输入:arr = [2,2,2]
输出:0
解释:不存在山脉子数组。

这一题,其实并没有那么简单,应为需要处理的细节部分是非常多的,解题代码如下:

int longestMountain(int* arr, int arrSize){int max=0;for(int i=0;i<=arrSize-3;i++){int p=0;int z=i;while(arr[i]<arr[i+1]){p++;i++;if(i==arrSize-2){break;}}if(p==0){continue;}int pz=i;while(arr[i]>arr[i+1]){if(i==arrSize-2){break;}i++;}if(i==arrSize-2&&arr[i]>arr[i+1]){max=fmax(max,i-z+2);}if(pz==i){continue;}if(i==arrSize-2&&arr[i]>arr[i+1]){max=fmax(max,i-z+2);}else{max=fmax(max,i-z+1);}i=pz;}if(max==0){return 0;}return max;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部