js(97)~ [11] 盛最多水的容器-双指针

94 阅读1分钟

力扣本题传送门

image.png

这道题好理解,用到算法也不复杂,看了一遍,第二天能够根据算法思路自己写出来正确的答案,就是判断左移动的时候是j--;

/*
 * @lc app=leetcode.cn id=11 lang=javascript
 *
 *
 */

// @lc code=start
/**
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function (height) {
	// 记录最大面积
	let maxRes = 0;
	let i = 0;
	let j = height.length - 1;
	while (i < j) {
		// 比较有没有比最大面积更大的值
		maxRes = Math.max(maxRes, (j - i) * Math.min(height[i], height[j]));
		// 这里大于 或者大于等于都行
		// i相当于从左往右 j相当于从右往左 判断哪个小哪个移动
		if (height[i] > height[j]) {
			// if (height[i] >= height[j]) {
				// 从右往左移动 需要j--
			j--
		} else {
			// 从左往右移动需要i++
			i++
		}
	}
	return maxRes

};
// @lc code=end