题解 | #盛水最多的容器#

盛水最多的容器

https://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47

应该使用什么类型的双指针解决此题?

  • 容器的容积和最短边长和底边长有关,要求最大的容积,可以用贪心的思想,即让底边长尽可能大,以及左右边长尽可能大。
  • 要使左右边长尽可能大,则应该使用对撞指针,即初始时左右指针指向首尾,要使最短边长尽可能大,则左右指针应该是边长小的一边移动,因为贪心思想下较长的一边比较短的一边更可能出现更大容积,移动过程更新最大容积。

参考

https://blog.nowcoder.net/n/48d8b18532324e60817a9a8db21b376d?f=comment

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param height int整型一维数组 
 * @return int整型
 */
export function maxArea(height: number[]): number {
    // write code here
    let maxVolume = 0;
    let left = 0;
    let right = height.length-1;

    while (left < right) {
        maxVolume = Math.max(maxVolume, Math.min(height[left], height[right])*(right-left));
        height[left] <= height[right] ? ++left : --right;
    }

    return maxVolume;
}

全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务