盛水专题

★ 算法OJ题 ★ 力扣11 - 盛水最多的容器

Ciallo~(∠・ω< )⌒☆ ~ 今天,我将和大家一起做一道双指针算法题--盛水最多的容器~ 目录 一  题目 二  算法解析 三  编写算法 一  题目 11. 盛最多水的容器 - 力扣(LeetCode) 二  算法解析 解法1:暴力枚举 算法思路:双层循环,枚举出能构成的所有容器,找出其中容积最⼤的值。(会超时) 解法2:对撞指针 如题目

[leetcode hot 150]第十一题,盛水最多的容器

题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 初始化分别位于高度数组开始和结束处的左右两个指针。计算指针当前位置的两行之间的面积。如果当前面积较大,更新最大面积。将

Java数据结构与算法(盛水的容器)

前言 针对此类算法题,最基本是暴力算法求解,暴力算法基本是固定的套路。在暴力算法基础上寻求优化思路,是否可以单词遍历能否得到所要的结果。此时需要观察数据的特征,推演数据变化对结果的影响,从而找到合理的解题思路。 . - 力扣(LeetCode) 实现原理 采用双指针移动方式,左右两边哪边低移动哪边,移动后计算容器大小。 具体代码实现(暴力) class Solution {publ

11.盛水最多的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5

算法004:盛水最多的容器

这道题比较简单,使用双指针。 要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。 在这个题中,我们把左边的位置设为left,右边的位置设为right,那么四边形的底就是(right-left) 高就是height[left]或者是height[right]。只需要用Math函数找出这两个数最小的一个值就可以了。 核心的部分: 对于上面两个图来说,哪

双指针-leetcode#11-盛水最大容器

class Solution {public:int maxArea(vector<int>& height) {//双指针if(height.size()<=1) return 0;int max_area=0;int left = 0,right = height.size()-1;while(left<right){int cur_area = min(height[left],heigh

leetcode-盛水最多的容器-109

题目要求 思路 1.正常用双循环外循环i从0开始,内循环从height.size()-1开始去计算每一个值是可以的,但是因为数据量太大,会超时。 2.考虑到超时,需要优化一些,比如第一个选下标1,第二个选下标3和第一个选下标3,第二选择下标1是一样的,所以,内循环遍历到小于 时,数据重复可以跳过,但是优化后还是超时 3.考虑优化高度,如果i一样,height[j] > height[j-1],说

盛水最多的容器 ---- 双指针

题目链接 题目: 分析: 最大容积 即使就是最大面积, 长为下标之差, 宽为两下标对应值的最小值解法一: 暴力枚举: 将每两个数之间的面积都求出来, 找最大值, 时间复杂度较高解法二:  假设我们的数组是[6, 2, 5, 4], 我们先假设最左边和最右边, 即6 和 4 之间是最大面积长a*宽b此时我们拿较小的那个数也就是4, 继续和中间的数进行比较 如果遇到的是2, 即比4小的数,

力扣刷题Days28-第二题-11.盛水最多的容器(js)

目录 1,题目 2,代码 3,学习与总结 3.1思路回顾 1,如何遍历 2,算法流程 3.2剖析问题 1,题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。 说明:你不能倾斜容器。

算法刷题:盛水最多的容器

盛水最多的容器 .习题链接题目题目解析算法原理我的答案 . 习题链接 盛水最多的容器 题目 题目解析 V=H*W h为左右两边低的一边,w为左右两边之间的距离 算法原理 定义两个指针 left=0,right=n-1; left从左往右对数组进行遍历,right从右往左进行遍历 遍历的过程中,每一次都需要记录当前容器的体积 关键: 因为V=H*W,而w在遍历

java 基础 解决水桶盛水问题

java 基础 解决水桶盛水问题@TOC 通过遍历每个高与其他的高组成的容器,并计算出其容积 然后利用取最大值的方法得到容积最大的的容器 public class Water {public static void main(String[] args) {int[] height= {1,8,6,2,5,4,8,3,7,};int n=height.length;int[][] max=ne

笔试面试题目:盛水最多的容器

今天周末,来看G公司的一道面试题:      求max{|i-j|*min{a[i], a[j]}}的值,其中a是正整数数组,i和j的区间为[0, n-1].       这其实就是leetcode中的“盛水最多的容器”,如下:        鲁迅说:暴力可以解决一切问题。        胡适说:暴力能解决的问题,都不是问题。        因为i和j的可能

【打卡】牛客网:BM93 盛水最多的容器

题目: 考虑到盛水容器的特殊性。双指针从最两边开始遍历,遍历过程中舍弃最小的。 不知道原理。 模板的: class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param height int整型vector * @return int整型*/int maxArea(vector<int>& height

11.盛水最多的容器(双指针,C解法)

题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数

Python求解盛水最多的容器

题目描述 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 LeetCode原题地址:https://leetcode-cn.com/problems/container

每日一题:LeetCode-11.盛水最多的容器

每日一题系列(day 13) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈    🔎🔎如果说代码有灵魂,那么它的灵魂一定是👉👉算法👈👈,因此,想要写出💚优美的程序💚,核心算法是必不可少的,少年,你渴望力量吗😆😆,想掌握程序的灵魂吗❓❗️那么就必须踏上这样一条漫长的道路🏇🏇,我们要做的,就是斩妖除魔💥💥,打怪升级!💪💪当然

(C++)盛水最多的容器--双指针法

个人主页:Lei宝啊  愿所有美好如期而遇 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/container-with-most-water/ 算法原理 双指针法,不一定是说就要使用指针,只是

双指针算法: 快乐数 与 盛水最多的容器

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 前言 声明:题目来源于: 力扣 一、快乐数 题目链接: 传送门 (1) 题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后

力扣最热一百题——盛水最多的容器

终于又来了。我的算法记录的文章已经很久没有更新了。为什么呢? 这段时间都在更新有关python的文章,有对python感兴趣的朋友可以在主页找到。 但是这也并不是主要的原因 在10月5号我发布了我的第一篇博客,大家也可以看见我的每一篇算法博客的开头都是吾日三省吾身,比那个男人帅吗?比那个男人爱她吗?比那个男人有实力吗?也可以在我的文章中的比如代码注释,结语感想看见一些emo 的句子 在之后

双指针——盛水最多的容器

一, 题目要求 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例 1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,

LeetCode【11】 盛水最多的容器

题目: 分析: 1、双指针,储水为(R-L )* 二者较小高度,如题目,(9-2)* 7 = 49 2、双指针向中间靠,每次移动较矮的指针。 代码: public int maxArea(int[] height) {int left = 0;int right = height.length - 1;int max = 0;while (left < right) {if (height

【算法学习】-【双指针】-【盛水最多的容器】

LeetCode原题链接:盛水最多的容器 下面是题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49

【算法学习】-【双指针】-【盛水最多的容器】

LeetCode原题链接:盛水最多的容器 下面是题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 示例1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49