栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

LeetCode 11盛水最多的容器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 11盛水最多的容器

力扣

解释:给定数组nums,求Max( min(nums[i],nums[j])*(j-i) ), 0<=i


目录

双指针

简单证明:

小技巧

1.对撞双指针

2.求最值


双指针

两个指针i,j指向数组首位

简单证明

不失一般性,假设nums[i]

如果移动右指针j,则底也变小,高可能变小可能不变,面积不可能变大。

所以只能移动i,及每次移动对应数值小的指针

class Solution {
public:
    int maxArea(vector& height) {
int n=height.size();
int i=0;
int j=n-1;
//双指针指向数组首尾

int max_content=(j-i)*min(height[j],height[i]);
int max_temp;//循环中求最大值



while(i 

小技巧

1.对撞双指针
int i=0;
int j=max_index;
//移动双指针直至相遇
while(i 

2.求最值
int max_res=0//定义最大值
int max_temp;//定义每步最大值
循环
{
操作;
更新max_temp;
max_res=max(max_temp,max_res);
}


//最小值类似

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号