• 11. 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 and n is at least 2.

    The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

    Example:

    Input: [1,8,6,2,5,4,8,3,7]
    Output: 49
    class Solution {
        public int maxArea(int[] height) {
            int res = 0;
            for(int i = 0; i < height.length; i++){
                for(int j = i + 1; j < height.length; j++){
                    int min = Math.min(height[i], height[j]);
                    res = Math.max((j - i) * min, res);
                }
            }
            return res;
        }
    }

    花里胡哨的,先给你来个brute force。

    class Solution {
        public int maxArea(int[] height) {
            int left = 0, right = height.length - 1;
            int res = 0;
            while(left < right){
                res = Math.max(res, Math.min(height[right], height[left]) * (right - left));
                if(height[left] < height[right])
                    left++;
                else
                    right--;
            }
            return res;
        }
    }

    双指针法,从左到右扫描一次,每次更新max(比较max和当前value(以左右低的为基准))。

  • 相关阅读:
    shell脚本day06-sed
    shell脚本day05-交互式输入与for语句
    shell脚本day04-if语句
    shell脚本day04-grep与正则表达式
    shell脚本day03-编程原理
    shell脚本day02-重定向与管道符
    编程原理大致介绍
    进程管理
    Linux网络
    shell脚本--grep以及正则表达式
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11589804.html
Copyright © 2020-2023  润新知