problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
leetcode::longest_mountain_in_array::Solution类 参考

#include <leetcode.h>

静态 Public 成员函数

static int longestMountain (vector< int > &arr)
 

详细描述

在文件 leetcode.h1305 行定义.

成员函数说明

◆ longestMountain()

int leetcode::longest_mountain_in_array::Solution::longestMountain ( vector< int > &  arr)
static

在文件 leetcode.cpp3288 行定义.

3288 {
3289 if(arr.size() < 3) {
3290 return 0;
3291 }
3292 auto up_down = vector<int>(arr.size() - 1);
3293 for(int i = 0; i + 1 < arr.size(); i++) {
3294 if(arr[i] < arr[i + 1]) {
3295 up_down[i] = 1;
3296 } else if(arr[i] > arr[i + 1]) {
3297 up_down[i] = 0;
3298 } else {
3299 up_down[i] = 2;
3300 }
3301 }
3302 auto sector_size = vector<pair<int, int>>();
3303 int prev = up_down[0];
3304 int count = 1;
3305 for(int i = 1; i < up_down.size(); i++) {
3306 if(up_down[i] != prev) {
3307 sector_size.emplace_back(prev, count);
3308 count = 1;
3309 } else {
3310 count++;
3311 }
3312 prev = up_down[i];
3313 }
3314 sector_size.emplace_back(prev, count);
3315 if(sector_size.size() < 2) {
3316 return 0;
3317 }
3318 int maximum = 0;
3319 for(int i = 0; i + 1 < sector_size.size(); i++) {
3320 if(sector_size[i].first == 1 && sector_size[i + 1].first == 0) {
3321 maximum = max(maximum, sector_size[i].second + sector_size[i + 1].second + 1);
3322 }
3323 }
3324 return maximum;
3325 }

被这些函数引用 leetcode::longest_mountain_in_array::TEST().


该类的文档由以下文件生成: