leecode-11盛最多水的容器C版-双指针的使用
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版-双指针的使用相关推荐
- 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- LeetCode 11. 盛最多水的容器
11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...
- 11. 盛最多水的容器 golang
11. 盛最多水的容器 (一道比较特殊的题) 之所以说特殊是因为这个题用动态规划反而比暴力破解法还复杂. 这种容器的题,就是前后指针方向.尽量别考虑别的思路. 11. 盛最多水的容器 给你 n 个非负 ...
- [贪心|双指针] leetcode 11 盛最多水的容器
[贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...
- 算法leetcode|11. 盛最多水的容器(rust重拳出击)
文章目录 11. 盛最多水的容器: 样例 1: 样例 2: 提示: 原题传送门: 分析 题解 rust go c++ java typescript python 11. 盛最多水的容器: 给定一个长 ...
- leetcode系列-11.盛最多水的容器
leetcode系列–第11题.盛最多水的容器 给定一个长度为 n 的整数数组 height .有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) .找出其中的两 ...
- java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)
执行结果: 通过 显示详情 执行用时 :5 ms, 在所有 Java 提交中击败了45.23% 的用户 内存消耗 :40 MB, 在所有 Java 提交中击败了25.70%的用户 题目: 给定 n 个 ...
- LeetCode 11. 盛最多水的容器(双指针)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...
- leetcode —— 11. 盛最多水的容器
给定 n 个非负整数 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai) .在坐标内画 n 条垂 ...
最新文章
- DELAY INIT 延迟初始化
- 中国网络出版产业盈利模式与投资前景形势研究报告2022版
- php和mysql建立链接
- PHP算法对获取用,连接的字符串用in进行sql查询的php处理方法
- MFC多标签页对话框
- mpeg2,mpeg4,h264编码标准的异同
- 野生前端的数据结构基础练习(5)——散列
- java 蓝桥杯算法训练 寂寞的数(题解)
- 剑指 Offer 13. 机器人的运动范围 【重刷】
- sessionattribute 被spring 扫描不到_Spring 系列之 Spring 常用注解总结(肝硬化的干货)...
- 网站服务器和空间大小,网站服务器和空间大小
- 沃特玛采集均衡模块_采集均衡模块以及电池管理系统技术方案
- 拉格朗日对偶性(Lagrange duality)
- 向武 清华大学 计算机,哥哥保送弟弟全市第二 双胞胎同时上清华(组图)
- Linux搭建eureka集群,基于dns搭建eureka集群
- 什么叫计算机网络虫洞,虫洞:危险与希望并存
- 【机器人学】机器人学领域的顶级期刊和会议
- python协程gevent案例 爬取斗鱼图片过程解析 - python
- PNPOLY - Point Inclusion in Polygon W. Randolph Franklin
- Deep Learning × ECG (5) :利用循环神经网络RNN对心律失常ECG数据进行分类
热门文章
- long double(64bit)
- mysql索引 删除和创建_mysql索引和唯一索引的创建和删除
- linux mono运行c 1,不装mono,你的.NET程序照样可以在Linux上运行!
- java string 练习_JAVA基础练习之String
- java数组硬盘读取,java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取...
- mysql bean分页查询_javabean 来实现 MySQL 的分页
- xlwt设置excel字体、对齐方式、边框、颜色、背景色
- matlab 正交特征向量,怎么对一个矩阵进行对称正交化?? matlab
- php 购物车案例教程,php初步实现购物车功能的实例分析
- web前端学习之HTML