zoukankan      html  css  js  c++  java
  • [leetcode]Container With Most Water

    题目:

    Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.

    解答:

    1、穷举法,两重循环,时间复杂度O(n^2),提交会出现超时错误;

    2、两指针中间靠,是一种贪心策略,因为中间靠的过程中,线间隔变小,所以只有如下情况才有可能取更大值:板的高度变的更高。

    代码如下:

    public int maxArea(int[] height) {
            int max = 0;
            int left = 0;
            int right = height.length - 1;
            int curArea = 0;
            while (left < right) {
                curArea = (right - left) * (height[right] < height[left] ? height[right--] : height[left++]);
                if (curArea > max)
                    max = curArea;
            }
            return max;
        }
  • 相关阅读:
    OC之class与metaclass
    call vs apply
    ABI
    WEB服务器的四种类型
    情绪控制
    位置无关代码
    Finding Leaks Using Instruments
    Mac之TwoLevel Namespace
    Apache的几个特性
    Mac之debuging symbol
  • 原文地址:https://www.cnblogs.com/shizhh/p/4707280.html
Copyright © 2011-2022 走看看