【双指针】LeetCode 11. 盛最多水的容器
时间:2023-01-30
本文章向大家介绍【双指针】LeetCode 11. 盛最多水的容器,主要内容包括题目链接、思路、代码、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接
思路
在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度−1:
-
若向内移动短板,则 \(min(h[i],h[j])\) 可能变大,因此下个水槽的面积可能增大 。
-
若向内移动长板,则 \(min(h[i],h[j])\) 不变或变小,因此下个水槽的面积一定减小 。
因此,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;即可获得最大面积。
总结:背向双指针问题,很多时候就是对于搜索空间的贪心问题,即不要想着很多步之后怎么样,多去想想这一步指针该怎么移动。
代码
class Solution {
public int maxArea(int[] height) {
int result = 0;
int left = 0;
int right = height.length - 1;
while(left < right){
int area = calculateArea(height[left], height[right], right - left);
result = Math.max(result, area);
if(height[left] < height[right]){
left++;
}else{
right--;
}
}
return result;
}
private int calculateArea(int leftHeight, int rightHeight, int length){
return length * Math.min(leftHeight, rightHeight);
}
}
原文地址:https://www.cnblogs.com/shixuanliu/p/17077083.html
- 线性回归:简单线性回归详解
- Codeforces 789A Anastasia and pebbles(数学,思维题)
- hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)
- 51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)
- 51Nod 1080 两个数的平方和(数论,经典题)
- Selenium3+python自动化50-环境搭建(firefox)
- Selenium2+python自动化51-unittest简介
- 开发者的如何优雅的使用OSX
- 1082 与7无关的数(思维题,巨坑)
- Facebook构建高性能Android视频组件实践之路
- Samba服务的配置总结
- 大型互联网系统的监控流水线
- 10-移动端开发教程-移动端事件
- 灰色理论预测模型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 剑指offer 03:二维数组中的查找
- 《剑指offer》04:替换空格
- 《剑指offer》05: 从尾到头打印链表
- 《剑指offer》第六天:重建二叉树
- Android | 《看完不忘系列》之Glide
- Android | 资源冲突覆盖的一些思考
- 如何获取流式应用程序中checkpoint的最新offset
- Spark之离线统计热点城市信息
- 使用OpenCV实现图像增强
- typescript基础篇(4):函数
- 这样的奇技淫巧,劝你不用也罢
- 一文详解设备ID的那些事儿
- Ansible搭建hadoop-3.1.3高可用
- Android | xml和view的那些事
- Android | Glide细枝篇