Bootstrap

题山采玉:(双指针)盛最多水的容器

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let's go!

我的博客:yuanManGan

我的专栏:C++入门小馆 C言雅韵集 数据结构漫游记  闲言碎语小记坊 题山采玉

目录

题目理解

思路讲解

方法一暴力解法

方法二双指针

代码实现

方法二双指针


题目来源 力扣11.盛最多水的容器

题目理解

题目给了关于线的长度的数组,任意选两个线,判断容器最大是多少,容积等于下标相减后乘以两条线最短的一条。

思路讲解

方法一暴力解法

我们一一枚举两条线,然后判断最大值。

这里等会就不编写代码了,判断一下时间复杂度很明显是O(n^2).

方法二双指针

假如我们枚举成这样以后,左边这条线比右边这条长,如果将左边这条线向右移动,不仅宽度会变小,长度再大也依据右边这条短的为主,而且宽度也变小了,我们就没有枚举下来的必要了,这时我们可以试试将右边这条线向左移动,继续进行上述判断,直到两条线重合。

方法:

1.定义两个指针left和right

2.先初始化容积为最初的

3.判断height[left] 与height[right]长度,短的--

4.更新容积

5.跳出循环

代码实现

方法二双指针

时间复杂度O(n).

;