博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:11. ContainerWithWater(Medium)
阅读量:7196 次
发布时间:2019-06-29

本文共 1669 字,大约阅读时间需要 5 分钟。

原题链接:

题目要求:给定n个非负整数a1,a2,...,an ,每一个整数对应一个坐标(i,a)。以(i,0)和(i,a)为端点画一条线段,现在选择两条线段,以x轴为底构成一个容器,请问选择那两条线段时可以使容器盛更多的水?

注意:“短板效应”,容量取决于短的那条边,以及两条线段之间的距离

思路:求出Max[min(line1,line2)*(i1-i2)]

方法一:暴力解决,去任意两条不同线段构成容器,求出最大值。时间复杂度O(n2),空间复杂度O(1)。

方法二:两端逼近,从数组的两端开始,不断向中间逼近。时间复杂度O(n),空间复杂度O(1)

1 package com.huiAlex; 2  3 import java.util.Random; 4  5 public class ContainerWithMostWater11 { 6  7     public static void main(String[] args) { 8         int[] height = new int[10]; 9         Random ran = new Random();10         for (int i = 0; i < height.length; i++) {11             height[i] = ran.nextInt(10);12             System.out.println(height[i]);13         }14         ContainerWithMostWater11 cw = new ContainerWithMostWater11();15         int a = cw.maxArea(height);16         int b = cw.maxArea2(height);17         System.out.println("area: " + a);18         System.out.println("area2:" + b);19     }20 // 两端逼近21     public int maxArea(int[] height) {22         int maxarea = 0;23         int l = 0;24         int r = height.length - 1;25         while (1 < r) {26             maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));27             if (height[l] < height[r])28                 l++;29             else30                 r--;31         }32         return maxarea;33     }34 // 暴力解决35     public int maxArea2(int[] height) {36         int maxarea = 0;37         for (int i = 0; i < height.length; i++)38             for (int j = i + 1; j < height.length; j++)39                 maxarea = Math.max(maxarea, Math.min(height[i], height[j]) * (j - i));40         return maxarea;41     }42 43 }

 

转载于:https://www.cnblogs.com/huiAlex/p/8056499.html

你可能感兴趣的文章
Paxos算法1-算法形成理论[转载]
查看>>
iOS 线程操作库 PromiseKit
查看>>
Outlook 2013 在邮件里面点击超链接时弹出“组织策略阻止我们为您完成此操作”...
查看>>
在IHttpHandler中获取session
查看>>
谷歌眼镜记录下的真实朝鲜
查看>>
IE6-9中tbody的innerHTML不能赋值bug
查看>>
Workflow_将一个消息同时发给通过用户(案例)
查看>>
[leetcode]Pow(x, n) @ Python
查看>>
Android -- ContentProvider
查看>>
【Java编码准则】の #11不要使用Object.equals()来比較密钥值
查看>>
“大型票务系统”和“实物电商系统”在支付方面的差别和联系
查看>>
atitit.插件体系设计总结o73.doc
查看>>
git 的一些笔记
查看>>
管理windows防火墙
查看>>
UISegmentedControl: 增加代理方法
查看>>
ForkJoin框架
查看>>
ORACLE PL/SQL异常处理(Exception)学习笔记
查看>>
skip-grant-tables:非常有用的mysql启动参数
查看>>
[书目20140902]实战Windows Azure——微软云计算平台技术详解 --徐子岩
查看>>
Android通过http协议POST传输方式
查看>>