数组的最长平台c语言,最长平台问题 C实现

本文介绍了如何使用C语言解决找到排序数组中最长平台的问题。通过遍历数组并比较当前元素与前一元素是否相等,动态更新最长平台的长度和数值。在代码实现中,定义了一个结构体来存储最长平台的数据和长度,最终返回这两个值。
摘要由CSDN通过智能技术生成

此问题来自《C语言名题精选百则》

问题1.1最长平台(plateau.c)

已知一个从小到大排序的数组,这个数组中的一个平台(plateau)是连续的一串值相同的元素,并且这一串元素不能再延伸,例如,在1,2,2,3, 3, 3, 4 ,5 ,5 ,6中1, 2.2, 3.3.3, 4, 5.5, 6都是平台,编写一个程序接收一个数组,把这个数组中平台最长的平台找出来,在上面的例子中,3,3,3就是数组中最长的平台。

需要考虑一下几点:

1.使用变量越少越好;

2.能否把数组的元素每一个都只查一次就得到结果?

3.程序语句越少越好。

我的想法是,用一个变量保存最长平台数值,再用一个变量保存最长平台长度,函数要返回这两个数值,就得用结构体

typedef struct{

int data;

int num;

}plateau;

如何计算平台长度?

当当前数值和前一个数值不相等时,统计前一个平台的长度,将这个长度和最长平台相比,如果大于最长平台,则将最长平台的数值和长度都保存为上一个平台的数值和长度,否则,当前值和前一个值相等,则将平台的长度+1;

if (arr[i] != arr[i-1] && length > max.num){

max.data &#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值