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.

    思路分析:这题考察双指针和贪心,左右两个指针,从两端開始,假设左边较矮,那么我们移动左边指针向右,去看是否能找到更高的左“墙”,假设找到,就计算面积更新下眼下的maxArea;假设右边较矮,那么我们移动右边指针向左,去看是否能找到更高的右“墙”,假设找到,就计算面积更新下眼下的maxArea,直到两个指针相遇,返回maxArea

    AC Code

    public class Solution {
        public int maxArea(int[] height) {
            int l, r, lh, rh, max, temp;
            l = 0;
            r = height.length - 1;
            lh = height[l];
            rh = height[r];
            max = 0;
            
            while(l < r){
                temp = Math.min(lh, rh) * (r - l);
                if(max < temp) {
                    max = temp;
                }
                
                if(lh > rh){
                    //move r
                    while(l < r && height[r] <= rh){
                        r--;
                    } 
                    if(l < r){
                        rh = height[r];
                    }
                } else {
                    //move l
                    while(l < r && height[l] <= lh){
                        l++;
                    } 
                    if(l < r){
                        lh = height[l];
                    }
                }
            }
            return max;
        }
    }


  • 相关阅读:
    基于.NET平台常用的框架整理
    简单的linq语法
    Newtonsoft.Json高级用法
    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)
    HTML URL 编码
    sql(SqlServer)编程基本语法
    正则表达式
    添加vs模板注释
    js实现无刷新表单提交文件,将ajax请求转换为form请求方法
    HTML5 手机端动态适配
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4272618.html
Copyright © 2011-2022 走看看