【每日两题】矩形问题——LeetCode11:盛最多水的容器;LeetCode84:柱状图中最大的矩形(C++)

大家好,秋招就要开始了。决定从今天开始需要定期刷LeetCode啦!

分享今日两道LeetCode题目~~~

 

LeetCode11:盛最多水的容器(C++)

题目描述:

【每日两题】矩形问题——LeetCode11:盛最多水的容器;LeetCode84:柱状图中最大的矩形(C++)_第1张图片

 

解题思路:

  • 核心思想:双指针。一个从最左边走,一个从右边走。
  • 【重点理解】:容纳水量的多少是由最低的容器决定的。
  • 所以使用water记录容纳的水量,然后左右指针由小的那边更新。

已通过代码:

class Solution {
public:
    int maxArea(vector& height) {
        int i=0, j=height.size()-1; //双指针初始
        int water = 0;//容水量记录
        while(i < j) {
            water = max(water, min(height[i],height[j])*(j-i));//每次更新记录最大的容水量
            if(height[i]

LeetCode84:柱状图中最大的矩形(C++)

题目描述:

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

               【每日两题】矩形问题——LeetCode11:盛最多水的容器;LeetCode84:柱状图中最大的矩形(C++)_第2张图片        【每日两题】矩形问题——LeetCode11:盛最多水的容器;LeetCode84:柱状图中最大的矩形(C++)_第3张图片

【每日两题】矩形问题——LeetCode11:盛最多水的容器;LeetCode84:柱状图中最大的矩形(C++)_第4张图片

 暴力解法代码:

class Solution {
public:
    int maxArea(vector& height) {
        int i=0, j=height.size()-1;
        int water = 0;
        while(i < j) {
            water = max(water, min(height[i],height[j])*(j-i));
            if(height[i]

 

你可能感兴趣的:(Leetcode)