Container With Most Water解题研究,面试题练习第一天

前言:

面试在即,需要通过做题,和复习知识来提高自己的竞争力。先从Leetcode面试题做起,水滴石穿,加油!

题目:

Given  n  non-negative integers  a1 a2 , ...,  an , where each represents a point at coordinate ( i ai ).  n  vertical lines are drawn such that the two end points of line  i  is at ( i ai ) and ( i , 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

Note: You may not slant the container.

代码:

</pre><pre name="code" class="cpp" style="font-size:14px;">class Solution {
public:
    int maxArea(vector<int> &height) {
        int start = 0;//定义左端点横坐标
        int end = height.size() - 1;//定义右端点的横坐标
        int result = INT_MIN;//初始化一个面积
        while (start < end) {//结束条件为左端点的横坐标大于右端点的横坐标,对所有情况进行遍历。
            int area = min(height[end], height[start]) * (end - start);//耳熟能详的矩形面积公式
            result = max(result, area);//最关键的一步,result只记录最大的面积。
            if (height[start] <= height[end]) {
                start++;//左端点横坐标右移
            } else {
            end - -;//右端点横坐标左移
            }
        }
        return result;
    }
};

总结:

解法不是我原创,由清华的某位大神写出来的。我做的工作是把解法看懂,现在编程能力刚起步,慢慢来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值