关于Container With Most Water的求解
Container With Most Water
哎,最近心情烦躁,想在leetcode找找感觉,就看到了这题。
然而,看了题目半天,硬是没看懂,于是乎就百度了下,怕看到解题方法,就略看了下摘要,以为懂了,万万没想到,居然把题目意思理解错了,所以还是要好好学英语呀。
然而,在理解对了之后,又是time limit excess,又瞟了下博客讲解,也算是徒手码了出来,记录一发,随便再体会下....
题目相关
题目在这,Container With Most Water
大概意思就是,给出的各点作x轴垂线,与x轴组成一个Container,然后找出两条线,使得其能储存最大容量的水,哎,其实仔细看题目,人家表述的很清楚呀,好好学英语呀...
思路一
正确理解题目了之后,按照我等弱鸡智商当然是第一反应是遍历了,很简单,两边两块板,容量为:
min*(j-i)
选取一边作为基准,遍历其后面的所有边,与之形成容器,得到各个容量。
两个循环就行...
好久没用js了,就熟悉下。
Algorithm = {};
Algorithm.private = {};
Algorithm.private.GetArea = function (height, i, j) {
var min = 0;
if (height[i] > height[j]) {
min = height[j];
} else {
min = height[i];
}
return min * (j - i);
}
Algorithm.ContainerWater = function (height) {
var maxArea = 0;
for (var i = 0; i < height.length; i++) {
for (var j = i; j < height.length; j++) {
var t = Algorithm.private.GetArea(height, i, j)
if (maxArea < t) {
maxArea = t;
}
}
}
return maxArea;
}
毫无疑问,时间超时,不过好歹也能工作吧.....
思路二
看了下别人的思路,原来,还可以这样
最终找到了两条线应该具备以下两个性质
- 左边的线的左边不会有比其更长的线
- 右边的线的右边不会有比其更长的线
其实很好理解,如果所找到的结果不满足这两条性质,那这结果必然不是最优的,也即是说,上面两点是必要条件,由此,得到以下代码...
Algorithm.ContainerWaterOpt = function (height) {
var a = [], b = [], amax = 0, bmax = 0, maxArea = 0;
for (var i = 0; i < height.length; i++) {
if (amax < height[i]) {
amax = height[i];
a.push(i);
}
if (bmax < height[height.length - i - 1]) {
bmax = height[height.length - i - 1];
b.push(height.length - i - 1);
}
}
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
var t = Algorithm.private.GetArea(height, a[i], b[j]);
if (maxArea < t) {
maxArea = t;
}
}
}
return maxArea;
}
后记
哎,以后做题时,还是好好思考题目本身里面的内涵,不一定非要从数据结构等来思考...
最最重要的,好好学英语呀!
关于Container With Most Water的求解的更多相关文章
- 如何装最多的水? — leetcode 11. Container With Most Water
炎炎夏日,还是呆在空调房里切切题吧. Container With Most Water,题意其实有点噱头,简化下就是,给一个数组,恩,就叫 height 吧,从中任选两项 i 和 j(i <= ...
- Container With Most Water - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Container With Most Water - LeetCode 注意点 没什么好注意的... 解法 解法一:暴力求解,假设任意两个端点会是最佳答 ...
- [LintCode] Container With Most Water 装最多水的容器
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- 67. Container With Most Water
Container With Most Water Given n non-negative integers a1, a2, ..., an, where each represents a poi ...
- LeetCode:Container With Most Water,Trapping Rain Water
Container With Most Water 题目链接 Given n non-negative integers a1, a2, ..., an, where each represents ...
- No.011 Container With Most Water
11. Container With Most Water Total Accepted: 86363 Total Submissions: 244589 Difficulty: Medium Giv ...
- leetcode面试准备:Container With Most Water
leetcode面试准备:Container With Most Water 1 题目 Given n non-negative integers a1, a2, ..., an, where eac ...
- [leecode]---11.container with most water
description: Input: [1,8,6,2,5,4,8,3,7]Output: 49 思路1: 从(1,a1)开始向后算面积,需要两层n循环,时间复杂度n2 思路2: 找出数组中最大的数 ...
- Leetcode11 Container With Most Water 解题思路 (Python)
今天开始第一天记录刷题,本人编程小白,如果有写的不对.或者能更完善的地方请个位批评指正! 准备按tag刷,第一个tag是array: 这个是array的第一道题:11. Container With ...
随机推荐
- Java 多线程编程之九:使用 Executors 和 ThreadPoolExecutor 实现的 Java 线程池的例子
线程池用来管理工作线程的数量,它持有一个等待被执行的线程的队列. java.util.concurrent.Executors 提供了 java.util.concurrent.Exe ...
- jsoneditor显示Json data
Git开源地址:https://github.com/josdejong/jsoneditor/blob/master/docs/api.md 1.引用JS文件 <!-- jsoneditor ...
- JS列表的下拉菜单组件(仿美化控件select)
JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...
- UVA 10392 (13.07.28)
Problem F: Factoring Large Numbers One of the central ideas behind much cryptography is that factori ...
- CLR 的执行模型(2)
第一章 CLR 的执行模型(2) 本篇内容大纲 Framework 类库(Framework Class Library , FCL) 通用类型系统(Common Type System,CTS) 公 ...
- Day2:T4求逆序对(树状数组+归并排序)
T4: 求逆序对 A[I]为前缀和 推导 (A[J]-A[I])/(J-I)>=M A[j]-A[I]>=M(J-I) A[J]-M*J>=A[I]-M*I 设B[]=A[]-M*( ...
- 分析Sizzle引擎
jQuery 2.0.3 源码分析Sizzle引擎 - 打造高效查询 为什么Sizzle很高效? 首先,从处理流程上理解,它总是先使用最高效的原生方法来做处理 HTML文档一共有这么四个API: ge ...
- NSSortDescriptor(数组排序)
如果数组里面的每一个元素都是一个个model,例如 DepartsDate.h文件 [plain] view plaincopy #import <Foundation/Foundation.h ...
- DSP TMS320C6000基础学习(4)—— cmd文件分析
DSP中的CMD文件是链接命令文件(Linker Command File),以.cmd为后缀. 在分析cmd文件之前,必需先了解 (1)DSP具体芯片的内存映射(Memory Map) (2)知道点 ...
- 什么是DCI
目录 备注什么是DCI?如何将Role注入到Data中?开发期注入字节码增强MixinTraitTemplateT4 + 部分类 + 显式接口实现 + 扩展类型,C#专用运行期注入Mixin动态代理为 ...