leetcode(hot100)6、7

embedded/2025/1/7 20:00:11/
解题思路:先排序再利用双指针思想然后再去重处理。去重要 nums [i] == nums [i- 1 ] 考虑-1,-1,2这种情况。
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(),nums.end());vector<vector<int>>result;for(int i = 0;i<nums.size();i++){if(nums[i] > 0)return result;if(i>0 && nums[i] == nums[i-1])continue;int left = i+1,right = nums.size()-1;while(left < right){if(nums[i]+ nums[left]+nums[right]>0)right--;else if(nums[i]+ nums[left]+nums[right]<0)left++;else{result.push_back(vector<int>{nums[i],nums[left],nums[right]});right--;left++;while(left < right && nums[right] == nums[right+1])right--;while(left<right && nums[left] == nums[left-1])left++;}}}return result;}
};

解题思路:

当前能接住的雨水=min(左侧最高,右侧最高)−当前高度 可以理解为能储水的体积 是哪一侧的最高高度然后减去当前高度

利用双指针不断向中间移动,然后通过动态更新leftmax和rightmax,当左指针最大高度小于右指针最大高度就左移反之就右移。能够存储的雨水量是一侧得到的最大高度减去当前的高度。能存储雨水的一定是短板而不是长板所以长板可以忽略不计。

利用哪一侧高度低哪一侧指针去移动。为什么只比较 leftmax 和 rightmax:

  • 如果 leftmax < rightmax,说明左侧的高度限制了雨水量,右侧高度足够高,可以忽略右侧的影响。

  • 反之,右侧高度限制了雨水量,忽略左侧的影响。

移动较小的一边是因为:

  1. 当前柱子的储水量取决于较小的一边。

  2. 较大的一边还有可能影响后续柱子的储水量,所以暂时不移动。

    class Solution {
    public:int trap(vector<int>& height) {int left = 0,right = height.size()-1,sum = 0;int leftmax=0,rightmax=0;while(left < right){leftmax = max(leftmax,height[left]);rightmax = max(rightmax,height[right]);if(leftmax < rightmax){sum += leftmax-height[left];left++;}else{sum += rightmax-height[right];right--;}}return sum;}
    };


http://www.ppmy.cn/embedded/151679.html

相关文章

【深度学习遥感应用中的“信息”】空间信息、语义信息、纹理信息、边缘信息、表层信息、深层信息...

【深度学习遥感应用中的“信息”】空间信息、语义信息、纹理信息、边缘信息、表层信息、深层信息… 【深度学习遥感应用中的“信息”】空间信息、语义信息、纹理信息、边缘信息、表层信息、深层信息… 文章目录 【深度学习遥感应用中的“信息”】空间信息、语义信息、纹理信息…

React快速上手到项目实战总篇

React核心价值与前置知识 时刻保持对知识的渴望 家人们 开学!!! 核心价值 组件化&#xff08;易开发易维护&#xff09; 数据驱动视图 &#xff1a;定义好数据和ui的显示规则 即UIf(state) 只关注业务数据修改&#xff0c;不在操作DOM 增加开发效率 使用vite创建Recat项目 …

[SMARTFORMS] 创建FORM

输入事务码SMARTFORMS进入表单开发界面&#xff0c;选中表单&#xff0c;自定义表单名称ZFS_DEMO_2025 点击"创建"按钮&#xff0c;跳转至"SAP表格设计器"页面 在"表格属性"填写表单描述、指定页格式和样式 在"表格接口"可以填写SMART…

Git的简单介绍与如何安装Git

文章目录 前言一、初始git1.git是什么2.为什么要使用git(出现的问题)3.git是如何解决问题的 二、git的安装与卸载1.centos系统2.ubuntu系统3.windows 三、搭建git本地环境1.创建git本地仓库2.配置用户信息 总结 前言 本文简单引入git的相关内容。 一、初始git 1.git是什么 g…

Unity 3D柱状图效果

1.单个柱状效果展示 2.从上到下渐变透明材质Shader Shader "Unlit/NewUnlitShader" {Properties{_MainTex ("Texture", 2D) "white" {}_Color("Color",Color) (1,1,1,1)_Alpha("Alpha",Range(0,1) ) 0.2_Alpha2("…

家政上门小程序如何创建?家政服务怎么能少了小程序帮手

在如今这个“忙到没时间打扫”的时代&#xff0c;家政服务变得越来越受欢迎。为了提高效率、减少沟通成本&#xff0c;很多家政公司都已经开始借助小程序的力量。那么&#xff0c;家政上门小程序到底该如何创建呢?小程序又是如何帮助家政服务更好地满足客户需求的呢?本文将为…

Python世界:人生苦短,我用Python

Python世界&#xff1a;人生苦短&#xff0c;我用Python 前言Python优势Python缺点 前言 几句话说清&#xff0c;我们为啥要用Python&#xff1f; Python设计之初心&#xff0c;是为了解决编程门槛&#xff0c;让大家更聚焦业务实现&#xff0c;而非编程细节。当前人工智能火…

【信息系统项目管理师】高分论文:论信息系统项目的风险管理(资金管控系统)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划风险管理2、风险识别3、定性风险分析4、定量风险分析5、风险应对计划6、实施风险应对7、监督风险论文 2017年1月,我作为项目经理参与了XX市XX集团的资金管控系统建设的项目。该项目合同金额为22Q万…