leetcode -- Container With Most Water -- 经典题目重要!
2015-12-11 21:07
507 查看
https://leetcode.com/problems/container-with-most-water/
思路很重要。常考题目。
时间复杂度O(n),两个指针i, j分别从前后向中间移动,两个指针分别表示容器的左右边界。每次迭代用当前的容量更新最大容量,然后把高度小的边界对应的指针往中间移动一位。 我们的目的是找到比i = 0, j = len(height) - 1, 围成的area更大的矩形。因为是i,j向中间移动,所以这条边长度是在减小,最短的那条边如果继续减小,那么肯定不是最大值,除非最短的边增大。。。并且较长的边向前移动也肯定不会使得面积增大, 例如j往左移动一步,得到的新的height[j]比原来的大不会使得面积增大,因为最短的height[i]没变,如果得到的新的height[j]比原来的小,那么面积可能相等或者变小,肯定不会变大
注意原理:ref里面有正确性证明
参考:
http://www.cnblogs.com/tenosdoit/p/3812880.html
my code:
思路很重要。常考题目。
时间复杂度O(n),两个指针i, j分别从前后向中间移动,两个指针分别表示容器的左右边界。每次迭代用当前的容量更新最大容量,然后把高度小的边界对应的指针往中间移动一位。 我们的目的是找到比i = 0, j = len(height) - 1, 围成的area更大的矩形。因为是i,j向中间移动,所以这条边长度是在减小,最短的那条边如果继续减小,那么肯定不是最大值,除非最短的边增大。。。并且较长的边向前移动也肯定不会使得面积增大, 例如j往左移动一步,得到的新的height[j]比原来的大不会使得面积增大,因为最短的height[i]没变,如果得到的新的height[j]比原来的小,那么面积可能相等或者变小,肯定不会变大
注意原理:ref里面有正确性证明
参考:
http://www.cnblogs.com/tenosdoit/p/3812880.html
my code:
class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype: int """ i, j = 0, len(height) - 1 res = 0 while i < j:#肯定是小于,没有等于,因为i == j的话,(j-i)==0 area = min(height[i], height[j]) * (j - i) res = max(res, area) if height[i] < height[j]:#这里也可以是<=,如果height[i] == height[j],移动i或者j都可以 i += 1 else: j -= 1 return res
相关文章推荐
- 盘点过去一年,MIT人工智能实验室的那些创新
- 淘宝tairKV分布式
- (unix domain socket)使用udp发送>=128K的消息会报ENOBUFS的错误
- http://www.cnblogs.com/kaituorensheng/p/3814925.html
- Codeforces Round #335 (Div. 2) 606C Sorting Railway Cars(hash)
- [ WARN ] Keyword 'Capture Page Screenshot' could not be runon failure: No browser isopen
- Communications link failure
- flume-ng负载均衡load-balance、failover集群搭建
- LeetCode 70:Climbing Stairs
- grails防止表单重复提交
- PL/SQL学习网站(日文)http://www.istudy.ne.jp/training/serial/plsql/index.html
- CF 605A(Sorting Railway Cars-贪心)
- Daily Scrum - 12/11
- Failed to create the part's controls
- Contains Duplicate II
- aix 计算性内存和文件内存
- AIX 配置vncserver
- 2014 Multi-University Training Contest 1/HDU4861_Couple doubi(数论/法)
- Contains Duplicate
- Condor error:Failed to execute condor_exec.exe