C++ 查找排序数组中最长平台的算法
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 < 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<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int longestPlatform = findLongestPlatform(nums);
cout << longestPlatform << endl;
return 0;
}
代码解释
1. findLongestPlatform 函数:该函数接收一个已排序的整数数组作为输入,并返回最长平台的长度。
2. 初始化变量:maxLength 用于记录当前找到的最长平台长度,初始值为 1。currentLength 用于记录当前平台的长度,初始值为 1。
3. 遍历数组:使用循环遍历数组,比较当前元素与前一个元素是否相等。
4. 更新平台长度:如果当前元素与前一个元素相等,则将 currentLength 增加 1,否则将 maxLength 更新为 maxLength 和 currentLength 的最大值,并重置 currentLength 为 1。
5. 返回最长平台长度:最后,返回 maxLength 作为最长平台的长度。
以上代码实现了查找排序数组中最长平台的功能,并在样例输入的情况下,成功输出最长平台的长度为 3。
原文地址: https://www.cveoy.top/t/topic/pLkz 著作权归作者所有。请勿转载和采集!