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

LeetCode_11. 盛最多水的容器

题目描述

11. 盛最多水的容器 - 力扣(LeetCode)icon-default.png?t=N6B9https://leetcode.cn/problems/container-with-most-water/

思路分析

        这题就是典型的是一道很经典的面试题,最优的解法是双指针,但很多人在第一次看到这题的时候很难想到用双指针来解(比如我)。好了,话不多说上解法:

首先我们设两个left和right分别指向height数组的头和尾。而容纳的水就相当于是面积,面积就等于:两个指针指向的数字中较小值 ∗ 指针之间的距离。那么接下来我们就要通过移动最右指针来不断比较,最终获取最大面积。即走一趟,求最大。而由于起初left在最左端,right在最右端,它们之间的距离就是最大的。所以无论left和right怎么移动,都是向中间移动,那么它们之间的距离一定是在不断减小的,所以我们需要每次移动left和right位置中的较小的那个指针。因为距离一定是减1的,所以我们每次舍弃掉较小的一个高度。(其实,这也可以说是一种贪心的思想)

我的题解

class Solution {
public:int maxArea(vector<int>& height) {int left = 0;int right = height.size() - 1;int max_area = 0;while(left < right){// 走一趟,求出最大int high = std::min(height[left], height[right]);int cur_area = (right - left) * high;max_area = std::max(max_area, cur_area);// 谁小让谁走,一样小的,无所谓if(high == height[left])left++;else right--;}return max_area;}
};

http://www.lryc.cn/news/103263.html

相关文章:

  • 【Android】APP电量优化学习笔记
  • 【微信小程序创作之路】- 小程序事件绑定、动态提示Toast、对话框 Modal
  • MVC与MVVM模式的区别
  • 【数据结构与算法】归并排序
  • OSG3.6.5 + VS2017前期准备及编译
  • IPv6 over IPv4隧道配置举例
  • 【GitOps系列】使用 ArgoCD 快速打造GitOps工作流
  • C#|无法打开cs文件设计窗口
  • 【SpringBoot笔记36】SpringBoot自定义WebSocketHandler集成WebSocket
  • flutter 图片相关
  • 将上位机程序从PC的window系统迁移至Intel NUC的无桌面版ubuntu系统问题记录
  • CHI中的error处理
  • 如何使用 PHP 进行数据库缓存处理?
  • 新版巨量广告投放技巧分析
  • Vue3 导出excel
  • vue 使用vue-json-viewer 展示 JSON 格式的数据
  • 14.python设计模式【模板方法模式】
  • 谷粒商城第六天-实现功能的前序工作(网关的配置 跨域配置)
  • 为什么说国内数字孪生平台gis架构采用Cesium是不错的选择?
  • 前端面试的性能优化部分(1)每篇10题
  • GitLab备份升级
  • Matlab实现遗传算法仿真(附上40个仿真源码)
  • git使用(由浅到深)
  • NAT协议(网络地址转换协议)详解
  • pytorch(续周报(1))
  • el-table 树形结构数据 设置某一层,新增按钮不展示
  • 【Unity2D】粒子特效
  • 第九十六回 网络综合示例:获取天气信息
  • Shell中获取昨天和多天前日期
  • golang静态编译及编译失败排查步骤