1. 盛最多水的容器

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

说明:你不能倾斜容器。

输入:[1,8,6,2,5,4,8,3,7]
输出:49 解释:图中垂直线代表输入数组
[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

输入:height = [4,3,2,1,4]
输出:16

2.双指针

双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。

3.代码

解题思路:创建两个指针分别指向数组的开始和结束,因为在长度不变的情况下面积的大小由短的一端的高来决定,得到“长*短一端的高”得到初始面积,所以移动短的一端来寻找更长的高度就能得到更大的面积,用这个面积不断与初始面积比较;若大于则覆盖初始面积。

#include <stdio.h>
#include <string.h>int maxArea(int* height, int heightSize){int end;   //end指针指向数组结尾 int start=0;  //start指向数组开头 int maxArea=0;   //最大面积 int Area=0;    //当前面积 end=heightSize-1;   while(start!=end)    /{Area=(end-start)*((height[start] <= height[end]) ? height[start] : height[end]);  //寻到到高的一端后,计算面积 maxArea = Area >maxArea ? Area: maxArea;    //与最大面积比较,看是否替代最大面积 if(height[start]>height[end])   //判断那边是短的一端 {end--;   //移动寻找高的一端 }else{start++; //移动寻找高的一端 }}return maxArea;    }
int main()
{int hight[]={1,8,6,2,5,4,8,3,7};int len,maxarea;len=sizeof(hight)/sizeof(hight[0]);maxarea=maxArea(hight,len);printf("最大面积为:%d",maxarea); return 0;} 

博主学到了: x>y? x: y
解释:如果x大于y这返回x,否则返回y。

leecode-11盛最多水的容器C版-双指针的使用相关推荐

  1. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)

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

  2. LeetCode 11. 盛最多水的容器

    11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...

  3. 11. 盛最多水的容器 golang

    11. 盛最多水的容器 (一道比较特殊的题) 之所以说特殊是因为这个题用动态规划反而比暴力破解法还复杂. 这种容器的题,就是前后指针方向.尽量别考虑别的思路. 11. 盛最多水的容器 给你 n 个非负 ...

  4. [贪心|双指针] leetcode 11 盛最多水的容器

    [贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...

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

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

  6. leetcode系列-11.盛最多水的容器

    leetcode系列–第11题.盛最多水的容器 给定一个长度为 n 的整数数组 height .有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) .找出其中的两 ...

  7. java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)

    执行结果: 通过 显示详情 执行用时 :5 ms, 在所有 Java 提交中击败了45.23% 的用户 内存消耗 :40 MB, 在所有 Java 提交中击败了25.70%的用户 题目: 给定 n 个 ...

  8. LeetCode 11. 盛最多水的容器(双指针)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...

  9. leetcode —— 11. 盛最多水的容器

    给定 n 个非负整数 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai​) .在坐标内画 n 条垂 ...

最新文章

  1. DELAY INIT 延迟初始化
  2. 中国网络出版产业盈利模式与投资前景形势研究报告2022版
  3. php和mysql建立链接
  4. PHP算法对获取用,连接的字符串用in进行sql查询的php处理方法
  5. MFC多标签页对话框
  6. mpeg2,mpeg4,h264编码标准的异同
  7. 野生前端的数据结构基础练习(5)——散列
  8. java 蓝桥杯算法训练 寂寞的数(题解)
  9. 剑指 Offer 13. 机器人的运动范围 【重刷】
  10. sessionattribute 被spring 扫描不到_Spring 系列之 Spring 常用注解总结(肝硬化的干货)...
  11. 网站服务器和空间大小,网站服务器和空间大小
  12. 沃特玛采集均衡模块_采集均衡模块以及电池管理系统技术方案
  13. 拉格朗日对偶性(Lagrange duality)
  14. 向武 清华大学 计算机,哥哥保送弟弟全市第二 双胞胎同时上清华(组图)
  15. Linux搭建eureka集群,基于dns搭建eureka集群
  16. 什么叫计算机网络虫洞,虫洞:危险与希望并存
  17. 【机器人学】机器人学领域的顶级期刊和会议
  18. python协程gevent案例 爬取斗鱼图片过程解析 - python
  19. PNPOLY - Point Inclusion in Polygon W. Randolph Franklin
  20. Deep Learning × ECG (5) :利用循环神经网络RNN对心律失常ECG数据进行分类

热门文章

  1. long double(64bit)
  2. mysql索引 删除和创建_mysql索引和唯一索引的创建和删除
  3. linux mono运行c 1,不装mono,你的.NET程序照样可以在Linux上运行!
  4. java string 练习_JAVA基础练习之String
  5. java数组硬盘读取,java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取...
  6. mysql bean分页查询_javabean 来实现 MySQL 的分页
  7. xlwt设置excel字体、对齐方式、边框、颜色、背景色
  8. matlab 正交特征向量,怎么对一个矩阵进行对称正交化?? matlab
  9. php 购物车案例教程,php初步实现购物车功能的实例分析
  10. web前端学习之HTML