leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode

题目:

给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

实例:

输入: [1,8,6,2,5,4,8,3,7] 输出: 49

思路一:

两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。所以每次将指向较短线段的指针向较长线段那端移动一步。与之前面积比较.

思路二:

//使用冒泡排序思想,但是超出时间限制

代码:

#if 1
/*
方法二:双指针法算法思路:两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。所以每次将指向较短线段的指针向较长线段那端移动一步。与之前面积比较我们在由线段长度构成的数组中使用两个指针,一个放在开始,一个置于末尾。 此外,我们会使用变量 maxarea 来持续存储到目前为止所获得的最大面积。 在每一步中,我们会找出指针所指向的两条线段形成的区域,更新 maxarea,并将指向较短线段的指针向较长线段那端移动一步。
*/
class Solution {public:int maxArea(vector<int>& height) {//特殊情况if(height.size() < 2)return 0;//使用双指针法int start = 0;int end = height.size()-1;int maxarea = min(height[start], height[end])*(end-start);while((end-1) > start){if(height[end] > height[start]){maxarea = max(min(height[start+1], height[end])*(end-start-1), maxarea);start++;}else{maxarea = max(min(height[start], height[end-1])*(end-start-1), maxarea);end--;}}return maxarea;}
};
#endif#if 0
class Solution {
public:int maxArea(vector<int>& height) {//特殊情况if(height.size() < 2)return 0;//使用冒泡排序思想,但是超出时间限制int ret = 0;int i,j;int temp = 0;for(i = 0; i<height.size()-1; i++)for(j = i+1; j<height.size(); j++){if(height[i]<=height[j])temp = height[i] * (j-i);elsetemp = height[j] * (j-i);if(temp > ret)ret = temp;}return ret;}
};
#endif

C++算法:.盛最多的水的容器:(双指针,夹逼法)相关推荐

  1. LeetCode--11.盛最多的水(双指针,暴力)

    盛最多的水(C) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 暴力穷举法 3.2 双指针法 1. 题目描述 难度:中等 2. 题目分析 该题目数字化之后可以这么理解: 给定数据[(a1, ...

  2. c++算法:四数之和---固定两数,用夹逼法

    leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode 题目: 给定一个包含 n 个整数的数组 nums 和一个 ...

  3. [Leedcode][JAVA][第11题][盛最多水的容器][双指针][贪心]

    [问题描述]11.盛最多水的容器 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 ...

  4. 【数据结构与算法】力扣实战之移动零、盛最多的水、爬楼梯

    练题法则 5-10分钟读题与思考 不要纠结没有思路就直接看题解: 不要死磕觉得自己很失败,怎么我们就想不出来: 基本上这些算法题,让我们自己想出来是不可能的: 拿跳表的来说,如果我们能从0-1把它想出 ...

  5. C++算法:最大回文子串---动态规划-----夹逼法----中心扩展法

    leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode 题目: 给定一个字符串 s,找到 s 中最长的回文子串. ...

  6. 算法题解(Leetcode 11、15、17、19、20:盛最多水的容器、三数之和、电话号码的字母组合、删除链表的倒数第 N 个结点、有效的括号)

    文章目录 [11. 盛最多水的容器 - 中等 - 9/7](https://leetcode-cn.com/problems/container-with-most-water/) [15. 三数之和 ...

  7. 算法leetcode|11. 盛最多水的容器(rust重拳出击)

    文章目录 11. 盛最多水的容器: 样例 1: 样例 2: 提示: 原题传送门: 分析 题解 rust go c++ java typescript python 11. 盛最多水的容器: 给定一个长 ...

  8. 算法探索_盛最多水的容器

    问题描述: 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其 ...

  9. 画解算法:盛最多水的容器 | 腾讯面试编程50题(二)

    01 题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其 ...

最新文章

  1. 2017英国AI形势报告:认知鸿沟、新商业模式和当下的挑战
  2. css3 @keyframes、transform详解与实例
  3. GridBagLayout布局管理器应用详解
  4. Hibernate调用存储过程
  5. supervisor
  6. 自带容器_什么是衬胶容器罐以及质量标准?
  7. KubeEdge 实践过程的记录
  8. C语言丨线性表(二):线性链表(单链表)
  9. java enum private_初步理解Java枚举类型
  10. matlab实现QPSK调制解调
  11. 抖音mysql_抖音排行榜数据库设计方案
  12. Coverage [minx,miny,maxx,maxy] is [12, 4, 13, 6, 3], index [x,y,z] is [2, 5, 3]错误原因及其解决方式...
  13. 这些年我的不足(不够专注,不善于推迟满足感,阅读量不够……-无网不剩 http://t.cn/zOe1RPz)
  14. 【蓝桥杯】看完这些,还在担心自己拿不到奖?
  15. [PYTHON]批量合并WORD文档,DOCX格式
  16. Vue Antdv 上传组件(a-upload、a-upload-dragger)二次封装(DZMAntdvUpload)
  17. 全国344个主要城市(县)地图
  18. pymysql mysql 1064_python使用pymysql操作MySQL错误代码1054和1064处理
  19. centos命令行安装matlab2016b
  20. ASP初学者的10个编程技巧

热门文章

  1. Linux 中ln 命令-n 参数的含义
  2. 东拉西扯:4岁的Blogbus怎么走
  3. 公开在线视频流(rtsp、stmp)
  4. BUAA 编译作业 练习2-1 2-2 2-3
  5. python怎么创建文件夹视频_怎么用python创建文件夹
  6. shell - grep输出的值赋值给变量,shell逻辑非(或者)的判断,和if-else
  7. Unity可编程渲染管线系列(一)自定义管线(控制渲染)
  8. 面向初学者的 MQL4 语言系列之3——技术指标和内置函数
  9. Selenium.Chrome相关配置及用法
  10. 微信开发 新浪SAE开发平台 验证Token 一直失败