LeetCode 11盛水最多的容器

LeetCode 11盛水最多的容器,第1张

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);
}


//最小值类似

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5502394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存