#LeetCode:11. Container With Most Water

從兩邊開始往內夾算面積,移動的方式就是看兩邊誰的高比較小,則那邊就向內移動。原因是因為面積只取到兩邊最小的高,如果某一邊比另外一邊高,就表示矮的那邊已經碰到極限了,所以就向內找看看有沒有更高的高。

C++(16ms)

/*******************************************************/
/* LeetCode 11. Container With Most Water              */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2018/10/02                                 */
/*******************************************************/
#include <cstdlib>

class Solution {
public:
  int maxArea(vector<int>& height) {
    int maxA = 0;
    for(int left = 0, right = height.size() - 1 ; left < right ; ){
      maxA = max(maxA, min(height[left], height[right]) * (right - left));
      if(height[left] < height[right]){
        ++left;
      }
      else{
        --right;
      }
    }

    return maxA;
  }
};
廣告

1 Comment

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

%d 位部落客按了讚: