首页 > 其他分享 >leetcode(hot100)5

leetcode(hot100)5

时间:2025-01-05 14:32:04浏览次数:3  
标签:int sum 高度 height hot100 移动 leetcode 指针

解题思路:(感觉用到了贪心)

双指针思想,首先计算当前面积,然后更新最大容量。移动指针的条件就是当左边高度小于右边了就左指针向右移 反之右指针向左移。(因为我们想尝试找到更高的线段以可能增加容量。)

  • 移动指针:

    • 比较两指针所指的高度:

      • 如果左侧高度 height[i] 小于右侧高度 height[j],移动左指针 i++,因为我们想尝试找到更高的线段以可能增加容量。

      • 如果右侧高度 height[j] 小于或等于左侧高度,移动右指针 j--。

        class Solution {
        public:
            int maxArea(vector<int>& height) {
                int i = 0,j = height.size()-1;
                int sum = 0,count=0;
                while(i<j){
                    count = min(height[i],height[j]) * (j-i);
                    sum = max(sum,count);
                    if(height[i]>height[j]){
                        j--;
                    }
                    else i++;
                }
                return sum;
                
            }
        };

标签:int,sum,高度,height,hot100,移动,leetcode,指针
From: https://blog.csdn.net/2301_79604637/article/details/144944774

相关文章

  • leetcode(hot100)4
    解题思路:双指针思想利用两个for循环,第一个for循环把所有非0的全部移到前面,第二个for循环将指针放在非0的末尾全部加上0。还有一种解法就是利用while循环双指针条件,当不为0就两个指针一起移动,为0就只移动右指针。不为0时交换左右数值,为0就不交换了。(如果数组没有0,那么快慢......
  • LeetCode 45. 跳跃游戏 II
    简介在算法领域,"跳跃游戏"是一个著名的问题,它模拟了在数组中通过跳跃到达特定位置的过程。"跳跃游戏II"是这个问题的一个变种,它要求我们找到到达数组末尾的最小跳跃次数。在这篇文章中,我们将详细解析这个问题,并提供一个高效的解决方案。问题描述算法解析我们采用贪心算法......
  • LeetCode 300. 最长递增子序列
    问题描述在算法领域,最长递增子序列(LongestIncreasingSubsequence,简称LIS)是一个经典问题。给定一个整数数组nums,我们的任务是找到其中最长严格递增子序列的长度。这里的“子序列”指的是在不改变其余元素顺序的情况下,通过删除(或不删除)数组中的元素得到的新序列。问题难点......
  • LeetCode算法题 (二叉树的直径)Day11!!!C/C++
    https://leetcode.cn/problems/diameter-of-binary-tree/description/一、题目描述给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它......
  • leetCode 739.每日温度
    题目给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。示例1:输入:temperatures=[73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示......
  • LeetCode232.用栈实现队列
    题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队......
  • leetCode 283.移动零
    题目给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0]思路:双指针。如果数组没有0,......
  • LeetCode22.括号生成
    题目:数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]思路:回溯法。如果左括号数量小于生成括号的对数,可以放一个左括号如果......
  • leetCode155:最小栈
    题目:设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。voidpush(intval)将元素val推入堆栈。voidpop()删除堆栈顶部的元素。inttop()获取堆栈顶部的元素。intgetMin()获取堆......
  • leetCode43.字符串相乘
    题目:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。示例1:输入:num1="2",num2="3"输出:"6"示例2:输入:num1="123",num2="456"输出:"56088"思路通过倒序,从个......