您的位置:首页 > 其它

最长平台问题

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

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





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



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

和这种解法相比,我的方法就差好多了.....因为我一方面要比较当前元素是否与前一个元素相等,从而判断是不是仍在一个平台中,并且需要一个当前平台的计数器,在进入另一个平台之后还需要将当前平台的长度与之前的最长平台长度进行比较。自然代码的长度就长好多了QAQ
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: