C++ 查找排序数组中最长平台的算法

本文将介绍如何使用 C++ 编写程序,从一个已排序的数组中找出最长的平台。平台定义为连续的一串值相同的元素。例如,在数组 1, 2, 2, 3, 3, 3, 4, 5, 5, 6 中,1, 2-2, 3-3-3, 4, 5-5, 6 都是平台。程序接收一个数组作为输入,并输出最长平台的长度。

输入描述

第一行有一个整数 n,为数组元素的个数。(1≤n≤100)第二行有 n 个整数,整数之间以一个空格分开,整数 k 范围(0<k<2000)。

输出描述

输出最长平台的长度。

样例输入 1

10
1 2 2 3 3 3 4 5 5 6

样例输出 1

3

C++ 代码

#include <iostream>
#include <vector>
using namespace std;

int findLongestPlatform(vector<int>& nums) { int n = nums.size(); int maxLength = 1; int currentLength = 1;

for (int i = 1; i &lt; n; i++) {
    if (nums[i] == nums[i-1]) {
        currentLength++;
    } else {
        maxLength = max(maxLength, currentLength);
        currentLength = 1;
    } 
}

maxLength = max(maxLength, currentLength);

return maxLength;

}

int main() { int n; cin >> n;

vector&lt;int&gt; nums(n);
for (int i = 0; i &lt; n; i++) {
    cin &gt;&gt; nums[i];
}

int longestPlatform = findLongestPlatform(nums);
cout &lt;&lt; longestPlatform &lt;&lt; endl;

return 0;

}

代码解释

1. findLongestPlatform 函数:该函数接收一个已排序的整数数组作为输入,并返回最长平台的长度。 2. 初始化变量:maxLength 用于记录当前找到的最长平台长度,初始值为 1。currentLength 用于记录当前平台的长度,初始值为 1。 3. 遍历数组:使用循环遍历数组,比较当前元素与前一个元素是否相等。 4. 更新平台长度:如果当前元素与前一个元素相等,则将 currentLength 增加 1,否则将 maxLength 更新为 maxLengthcurrentLength 的最大值,并重置 currentLength 为 1。 5. 返回最长平台长度:最后,返回 maxLength 作为最长平台的长度。

以上代码实现了查找排序数组中最长平台的功能,并在样例输入的情况下,成功输出最长平台的长度为 3。

C++ 查找排序数组中最长平台的算法

原文地址: https://www.cveoy.top/t/topic/pLkz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录