leetcode 盛水最多的容器 解析

采用双指针法:

主要思想:定义头尾两个指针,分别向中间遍历,当相遇时结束循环。存储每一次遍历容器盛水的最大容量,并不断更新。 盛水的最大容量为 左右指针高度的最小值 乘以 左右指针的距离即宽度。 则可以得到最终的盛水容量。每一次比较头尾指针的高度,若头比尾高 则尾指针向左移动,若头比尾低,则头指针向右移动。

 1 var maxArea = function(arr) {
 2     var ans = 0;
 3     var head = 0; var tail = arr.length-1;
 4     while(head < tail){
 5         var tmp = Math.min(arr[head],arr[tail])*(tail-head);
 6         ans = Math.max(tmp,ans);
 7         if(arr[head] <arr[tail]){
 8             head++;
 9         }else{
10             tail--;
11         }
12     }
13     return ans;
14 };

 

posted @ 2021-01-28 15:57  TangTaue  阅读(93)  评论(0编辑  收藏  举报