leetcode11. Container With Most Water两根柱子围成最大面积

牛客网第一课第三题
问题:给定一个非负数的数组,数组中的每个值代表一个柱子的高度,柱子的宽度是1。两个柱子之间可以围成一个面积,规定:面积=两根柱子的最小值*两根柱子之间的距离。
例子:数 组[3,4,2,5]。3和4之间围成的面积为0,因为两个柱子是相邻的,中间没有距离。3和 2之间围成的面积为2,因为两个柱子的距离为1,且2是最短的柱子,所以面积=1*2。3和5之间围成的面积为6,因为两个柱子的距离为2,且3是最短的柱子,所以面积= 3*2。求在一个数组中,哪两个柱子围成的面积最大,并返回值。
要求:实现时间复杂度O(N),额外空间复杂度O(1)
类似leetcode上的11题 Container With Most Water,区别是leetcode11的两个相邻位置距离我们当成1处理。
解法1:这道题看起来难度不是很大,最朴素的想法就是对每一个位置遍历一遍,计算这个位置到其他位置围成的面积,保留最大的。这样的时间复杂度为O(N*N),额外空间复杂度O(1)。
解法2:这里我们还是要玩双指针,左指针L指向数组的第一个位置,右指针R指向数组的最后一个位置。取两个位置值小的那一个,记为T,T*(R-L-1)就是L和R围成的面
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值