LeetCode--11.盛最多的水(双指针,暴力)
盛最多的水(C)
- 1. 题目描述
- 2. 题目分析
- 3. C语言实现
- 3.1 暴力穷举法
- 3.2 双指针法
1. 题目描述
难度:中等
2. 题目分析
该题目数字化之后可以这么理解:
给定数据[(a1,1), (a2,2), (a3,3)…(an, n)], 求解 min(ax, ay)*abs(x-y)的最大值。该题目有两种解法:
- 暴力穷举法
该方法是最容易想到的,依次穷举所有情况,然后输出最大值即可,这种算法时间复杂度为O(n^2) - 双指针法
双指针法在处理数组问题的时候真的是神器,定义两个指针,一个放在数组首位,一个放在数组末尾,然后计算对应的面积,将两者之间高度小的一方移动,并更新面积的值,直到两个指针相遇输出最终的结果。至于这个方法为什么一定能够遇到最大值,我还没有想明白,只是可以从反证的角度来解释。这种算法时间复杂度为O(n)
3. C语言实现
3.1 暴力穷举法
代码如下:
int maxArea(int* height, int heightSize){int i, j, h, l;long res = 0;for(i = 0; i < heightSize-1; i++){for(j = i+1; j < heightSize; j++){h = height[i]>height[j]? height[j]:height[i];l = j-i;res = res>h*l? res:h*l;}}return res;
}
运行结果为:
3.2 双指针法
代码如下:
int maxArea(int* height, int heightSize){//i, j为两个指针,h为高,l为长,用来计算面积int i=0, j=heightSize-1, h, l;long res = 0;for(;i<j;){h = height[i]>height[j]?height[j]:height[i];l = j-i;res = res>l*h?res:l*h;if(h==height[i])i++;elsej--;}return res;
}
运行结果为:
LeetCode--11.盛最多的水(双指针,暴力)相关推荐
- [贪心|双指针] leetcode 11 盛最多水的容器
[贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...
- LeetCode 11. 盛最多水的容器
11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...
- LeetCode 11. 盛最多水的容器(双指针)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...
- 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- leetcode —— 11. 盛最多水的容器
给定 n 个非负整数 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai) .在坐标内画 n 条垂 ...
- LeetCode #11 盛最多水的容器
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- LeetCode——11. 盛最多水的容器
题目链接:https://leetcode-cn.com/problems/container-with-most-water/ #include <bits/stdc++.h> #inc ...
- 力扣(leetcode) 11. 盛最多水的容器 (短板木桶原理详解)
题目在这:https://leetcode-cn.com/problems/container-with-most-water/ 思路分析: 本题容易想到使用双指针维护水桶的左边和右边. 开始时,L指 ...
- LeetCode 11 盛最多水的容器
https://leetcode-cn.com/problems/container-with-most-water/ 解决方案 class Solution {public int maxArea( ...
最新文章
- 逻辑覆盖测试(一)语句覆盖
- leetcode 91. Decode Ways | 91. 解码方法(动态规划)
- C语言中队列、堆栈、内存映射、多线程概念
- type或者xtype总结
- linux回收内存的方法,linux释放内存的方法
- 万字长文讲解编码知识,看这文就够了!| 原力计划
- oracle物理,Oracle物理结构概述
- python导入excel表格给列命名_Python中对 Excel 的相关详细操作(读取、写入、指定行、指定列、新增sheet工作表)...
- DS博客作业01--日期抽象数据类型设计与实验
- 自己DIY一个mp3播放器
- Fedora 33 安装wine-6.0 微信3.0
- UE4.26水系统和浮力系统
- IOS破解软件,比较全的网站。
- English常用短语
- 《统计建模与R软件》第二章课后作业解题答案
- 李大潜:学习数学是战略性投资【导图版】
- rocketMQ原理讲解
- 树莓派Kali系统 HDMI 修改屏幕分辨率
- 外卖项目 - Day05
- fNIRS用于评估自然/社会情况下人类行为中的脑功能