给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

功能实现

这个算法有两种实现,第一种很简单就是两层for循环取出最大值就行了,没什么意思,所以就不再赘述了,第二种方式就是贪心法,先找到最大的横坐标,然后依次减小横坐标,变幻纵坐标,但是只能减小两个相比最小的纵坐标的横坐标,这样才能找到最大值(注释:因为我们要找最大值,如果要找最小值,那么就要更改最大纵坐标的横坐标了)
说明:你不能倾斜容器,且 n 的值至少为 2。
示例:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49

代码如下:

public static void main(String[] args) {//       Vector<int> a = new Vector<int>(5);int[] a = new int[]{1,8,6,2,5,4,8,3,7};System.out.println(TestMaxArea.getMaxArea(a));}/***** 贪心法* 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。输入: [1,8,6,2,5,4,8,3,7]输出: 49*/public static int getMaxArea(int[] a){int hg = a.length;//数组长度int left = 0;int right = hg-1;//寻找最大面积int x = right - left + 1;//长方形的长度int y = Math.min(a[left], a[right]);int area = x*y;while(left != right){if(a[right] >= a[left]){//左边大于右边 每次要移动高度比较小的那个 才有可能让面积增大left = left + 1;}else{right = right - 1;}x = right - left;y = Math.min(a[left], a[right]);int temp = x*y;if(temp > area){area = temp;}}return area;}```

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,相关推荐

  1. 蓝桥杯真题 求和 给定 n 个整数 a1· a2, · · · , an,求它们两两相乘再相加的和

    求和 问题描述 给定 n 个整数 a1, a2, · · · , an ,求它们两两相乘再相加的和,即: S=a1·a2+a1·a3+···+a1·an+a2·a3+···+an-2·an+an-1· ...

  2. 针对第2章习题6的SPJ数据库,为项目名称为“一汽”的工程项目建立一个供应情况的视图V_SPJ,视图中应包括供应商代码SNO,零件代码PNO,供应数量QTY,并针对该视图完成下列查询 (1)找出一汽

    针对第2章习题6的SPJ数据库,为项目名称为"一汽"的工程项目建立一个供应情况的视图V_SPJ,视图中应包括供应商代码SNO,零件代码PNO,供应数量QTY,并针对该视图完成下列查 ...

  3. 村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。

    IBM公司向来以高素质人才作为企业持续竞争力的保证.进入IBM公司是差不多每个IT人的梦想.下面这条IBM公司的面试题,给大家试试看,看看是否具备进入IBM的实力! 村子里有50个人,每人有一条狗,在 ...

  4. 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素

    http://blog.csdn.net/yysdsyl/article/details/5419149#cpp 题目: 给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n ...

  5. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    /**  * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素.  * 能够假定数组元素原先是按从小到大的顺序排列的.  */ /*** 思路:数组被 ...

  6. 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...

    2019独角兽企业重金招聘Python工程师标准>>> /** * 功能:给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 可以假定 ...

  7. 找出游戏的必胜的策略(博弈论的学习)

    题目:硬币游戏1,Alice和Bob在玩这样一个游戏.给定k个数字a1,a2,···ak. 一开始,有x枚硬币,Alice和Bob轮流取硬币.每次所取硬币的枚数 一定要在a1,a2···,ak当中.A ...

  8. 在两个已经排好序的数组里找出第K小的数

    前言: 这道题是一道非常常见的面试题,也是一道能够考察一个人的编程能力和算法的一道题.如果要求复杂度为 O(k), 是比较容易做出来的,但是,一般来讲,面试官要求给出更低复杂度的算法.网上有很多不同的 ...

  9. 利用计算机找出函数关系式,汽车理论课后题答案.doc

    汽车理论课后题答案.doc 第一章汽车的动力性 1.1试说明轮胎滚动阻力的定义,产生机理和作用形式. 答车轮滚动时,由于车轮的弹性变形.路面变形和车辙摩擦等原因所产生的阻碍汽车行驶的力称为轮胎滚动阻力 ...

最新文章

  1. 梅卡曼德机器人| 机器视觉算法、深度学习算法、软件开发等海量岗位
  2. CentOS6.3.x86_64安装Trac
  3. maven3常用命令、java项目搭建、web项目搭建
  4. 用ProFTPD构建FTP服务器
  5. 2020 操作系统第零天复习(知识点总结)
  6. Centos 7安装与配置chef
  7. 再见 Jenkins !几行脚本搞定自动化部署,这款神器有点厉害!
  8. 开源 协作工具_6所高等学校教授开源,协作峰会的言论以及更多新闻
  9. 使用Axure创建iPhone应用程序原型(二)
  10. Flash遮罩动画之画轴
  11. 安卓游戏等待服务器响应时间,电竞显示器响应时间原理及最佳游戏设置方法
  12. 快速有效分离RNA——土壤RNA纯化试剂盒
  13. 打飞机小游戏html代码,纯汇编实现打飞机小游戏的示例代码
  14. Mac下载安装vscode
  15. 【计算机图形学实验1——实现中点画线算法、Bresenham画线算法】
  16. 浅析Marshmallow在flask中的应用
  17. 码流、单码流、双码流、多码流
  18. 八字算命网站源码技术细节解析:使用PHP和JAVA实现的MVC架构、MySQL数据库设计和功能模块介绍
  19. 计算机域名是什么域名?
  20. 转载:解决服务器上 w3wp.exe 和 sqlserver.exe 的内存占用率居高不下的方案

热门文章

  1. Android仿支付宝订单确认和支付
  2. 246day(京东耳机定向爬虫练习)
  3. 玻璃隔断是最佳隔开空间的装修设计
  4. Java Solr全文搜索引擎的实现
  5. linux内核启动分析(一)
  6. JsonResult类型
  7. 磁盘最优存储问题【贪心算法】
  8. MySQL执行计划理解与实践
  9. 图片文字转换成语音的方法一览
  10. 电子商务大赛历年获奖作品_我校师生在第九届海洋文化创意设计大赛中喜获佳绩!...