当前位置: 首页 > news >正文

LeetCode 11.盛最多水的容器

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

Java代码:

C++代码:


题目:

题目描述:

题目链接:

11. 盛最多水的容器 - 力扣(LeetCode)

思路:

核心思路:

双指针

思路详解:

这题主要是用双指针的思想来解决,首先定义area用于记录所有情况中的最大容量,i指针指向数组第一个元素,j指针指向数组最后一个元素。由题及常识不难理解容器的最大容量取决于短板,如果当前情况是i指向的是短板,那我们就需要尝试去寻找更长的板,所以j指向的长板不用动将i指针后移。如果当前情况是j指向的是长板,那我们也同样需要尝试去寻找更长的板,所以i指向的长板不用动将j指针前移。双指针合法的条件就是i<j,因为i==j的时候底就为0了,i>j实际上就和i<j的情况重复了

代码:

Java代码:

class Solution {  //双指针public int maxArea(int[] height) {int area = 0;  //area用于记录所有情况中的最大容量int i = 0;                  //i指针指向数组第一个元素int j = height.length - 1;  //j指针指向数组最后一个元素int s,h;while(i < j){h = Math.min(height[i],height[j]);  //此时容器的最大容量取决于短板s = h * (j - i);  //计算此时容器的最大容量if(s > area)  //如果出现更大的容量就修改area记录的数值{area = s;}if(height[i] < height[j])  //如果i指向的是短板就i指针后移去寻找更长板{i++;}else  //如果j指向的是短板就j指针前移去寻找更长板{j--;}}return area;}
}

C++代码:

class Solution {  //注释同理Java代码
public:int maxArea(vector<int>& height) {int area = 0;int i = 0;int j = height.size() - 1;int s,h;while(i < j){h = min(height[i],height[j]);s = h * (j - i);if(s > area){area = s;}if(height[i] < height[j]){i++;}else{j--;}}return area;}
};

http://www.dtcms.com/a/265009.html

相关文章:

  • Binder机制与实现原理解析
  • 达梦数据库一键安装脚本详解
  • 《P4145 上帝造题的七分钟 2 / 花神游历各国》
  • VSCode-Copilot的系统提示词
  • 云上配送革命:亚矩云手机如何重塑Uber Eats的全球外卖生态
  • Javaweb - 9 HTTP 协议
  • MAC 多应用切换技巧,单应用切换技巧
  • CentOS 卸载docker
  • [学习记录] HLSL-编译指示及属性
  • IPS防御原理和架构
  • Prompt Engineering Guide — 提示工程全方位指南
  • Kafka Controller 元数据解析与故障恢复实战指南
  • UI前端大数据处理策略优化:基于云计算的数据存储与计算
  • leetcode:416.分割等和子集【01背包】【动态规划】
  • 光照解耦和重照明
  • 接口测试用例设计
  • Shader Graph学习——屏幕uv采样
  • 智能学号抽取系统 V3.7.5 —— 一个基于 Vue.js 的交互式网页应用
  • Arduino CH552 PWM的使用
  • 项目开发基本流程
  • 深入理解Unicode:字符编码的终极指南
  • RGB下的色彩变换:用线性代数解构色彩世界
  • vue3 JavaScript localeCompare 比较两个字符串 localeCompare is not a function
  • 如何将文件从 iPhone 传输到 Android(新指南)
  • Spring Boot 集成 GeoTools 详解
  • 昇腾机器节点磁盘状态检查与问题处理方法
  • 智能攻击原理和架构
  • 深入Flink核心概念:解锁大数据流处理的奥秘
  • vue-36(为组件编写单元测试:属性、事件和方法)
  • 【Linux】Rocky Linux 安装教程