
💌 所属专栏:【LeetCode题解(持续更新中)】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的码仔,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩
前言
大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第9篇文章,主要讲解是LeetCode11. 盛最多水的容器(双指针-对撞指针)。
专栏地址:【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、编程题:167. 两数之和 II - 输入有序数组(双指针)
1.题目描述
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。 LeetCode题目链接。
2.示例1:

输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
3.示例2:
输入:height = [1,1]
输出:1
4.提示:
- n == height.length
- 2 <= n <= 105
- 0 <= height[i] <= 104
二、解题思路
这次还是老规矩练习一下双指针的思想,不枉练习这么多次双指针的题,现在双指针思路算是有一点长进了。其关键点还是该怎么去移动这两个指针?这一点要理清楚。;
1.思路
解决方法1(个人想法):
- Step 1.创建left,right分别指向数组开头和末尾,并用maxsun存储数组中得到的最大水量;
- Step 2.通过比较height[left]和height[right]大小来决定指针的移动,当height[left]<height[right]时,要保持大的一边不动,小的一边移动到下一个元素(left++);
- Step 3.同理当height[left]>height[right]时,右指针移动到下一位(right–);
- Step 4.重复Step2,3步直到遍历完整个数组就能得到最大水量;
这里Step2,3步的移动时是通过贪心思想来进行的,原理上两边需要不断的向大的高度去取,就有可能会得到其最优解。
2.复杂度分析:
时间复杂度 O(N): 双指针遍历一次底边宽度N。
空间复杂度 O(1): 使用常数额外空间。
三、代码实现
。每个代码块都写了注释,方便理解,代码还可以改进;
代码如下(示例):
解法一:
class Solution {
public int maxArea(int[] height) {
//方法一
int left = 0, right = height.length - 1, maxsum = 0, sum, w;
while(left < right){
w = right - left;
// 两者进行比较,谁小谁先移动,直到遍历完整个数组
if(height[left] < height[right]){
sum = (w) * height[left++];
maxsum = Math.max(maxsum, sum);
}else{
sum = (w) * height[right--];
maxsum = Math.max(maxsum, sum);
}
}
return maxsum;
}
}
提交结果:

总结
以上就是今天要讲的内容,做题的时候,就是奔着双指针的思路进行解决的,联练习这么多次现在逐渐找到了点感觉。我感觉就是双指针的关键点就是在于该怎么去移动两个指针,理清这一点之后离结果也就不远了,以前不懂的时候做一题就花费一天,现在一个上午就完事了,很明显有了提示。所以就赶紧记录一下这时刻。
感谢观看,如果有帮助到你,请给题解点个赞和收藏,让更多的人看到。🌹 🌹 🌹
也欢迎你,关注我。👍 👍 👍
原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!
更多专栏订阅:
- 😀 【LeetCode题解(持续更新中)】
- 🚝 【Java Web项目构建过程】
- 💛 【数字图像处理】
- ⚽ 【JavaScript随手笔记】
- 🤩 【大数据学习笔记(华为云)】
- 🦄 【程序错误解决方法(建议收藏)】
- 🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!

1786

被折叠的 条评论
为什么被折叠?



