嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let's go!
我的博客:yuanManGan
目录
题目来源 力扣11.盛最多水的容器
题目理解
题目给了关于线的长度的数组,任意选两个线,判断容器最大是多少,容积等于下标相减后乘以两条线最短的一条。
思路讲解
方法一暴力解法
我们一一枚举两条线,然后判断最大值。
这里等会就不编写代码了,判断一下时间复杂度很明显是O(n^2).
方法二双指针
假如我们枚举成这样以后,左边这条线比右边这条长,如果将左边这条线向右移动,不仅宽度会变小,长度再大也依据右边这条短的为主,而且宽度也变小了,我们就没有枚举下来的必要了,这时我们可以试试将右边这条线向左移动,继续进行上述判断,直到两条线重合。
方法:
1.定义两个指针left和right
2.先初始化容积为最初的
3.判断height[left] 与height[right]长度,短的--
4.更新容积
5.跳出循环
代码实现
方法二双指针
时间复杂度O(n).