题目分析
本题很有趣,如果想得到很简单,如果想不到就会很难,提示小伙伴们能否从两个数开始思考呢?
本题是Leetcode周赛的一个签到题,基本上有一些算法基础的朋友都能做得出来。为什么要把这个题目拿出来分享呢?是希望小伙伴们能够扩展本题的数据量进行计算,当数据量为1e2可以采用哪些方法?数据量为1e3可以采用哪些方法?数据量为1e5可以采用哪些方法?
Leetcode的题目都是类似的,做的多了都能够从以前做的题目中发现相似之处,本题和Leetcode84类似,遇到最大矩形面积的问题,通常都要使用数组height[i][j]计算(i, j)上方的最大高度,那么就提示那么多吧,小伙伴们根据提示思考下一步如何解决?
一开始做这个题目的时候,使用暴力法进行求解,先进行排序,再以每一个数为基准,并将小于该元素的数加至该元素,当加k个值时停止。这种方法时间复杂都为O(nk),因为n和k都是1e5的数据,因此无法通过所有样例。小伙伴们能否找到更好的算法呢?