最长平台问题

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

        先说说我的想法吧,很显然,这样一个数组可以看成是有连续几个平台组成的,当从一个平台进入另一个平台的标志就是数字不同了,而在这时就可以统计上一平台的长度,再讲其与之前统计的最长平台长度进行比较,若更大则替换~下面附上源代码


但是事实上最简的做法不是这样的~(当然不是我原创的啦啦啦~):


它的想法其实很简单,就是在遍历数组的时候用,讲当前元素与当前最长平台的长度之前的元素进行比较,若还是相等的,因为元素都已经排好序了,则之前的长度加是当前的元素,那么最长的平台长度则可以在原来的基础上加一了!通过对整个数组的遍历,而求得最长的长度。

和这种解法相比,我的方法就差好多了.....因为我一方面要比较当前元素是否与前一个元素相等,从而判断是不是仍在一个平台中,并且需要一个当前平台的计数器,在进入另一个平台之后还需要将当前平台的长度与之前的最长平台长度进行比较。自然代码的长度就长好多了QAQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值