LeetCode: 盛最多水的容器
阿新 • • 發佈:2018-12-20
自我認為是盛最多水與最大面積是一樣的道理
通過java的函式來進行計算
class Solution { public int maxArea(int[] height) { int maxarrea=0; //ArrayList<Integer> result=new ArrayList<Integer>(); for (int i = 0; i <height.length-1 ; i++) { for (int j = i+1; j < height.length; j++) { //int heightReal = Math.min(height[i],height[j]); // int wide=Math.abs(j-i); // int area=Math.min(height[i],height[j])*(j-i); maxarrea=Math.max(maxarrea,Math.min(height[i],height[j])*(j-i)); } } //Collections.sort(result);//針對一個ArrayList內部的資料排序 //Arrays.sort(result);//Arrays是util包陣列排序 return maxarrea; } }
後因為並不是最優 我是把所有的注意遍歷 後來想到我的程式碼是可以優化的 從單向遍歷我可以改為雙向遍歷 因為可以從長最長與寬最長來進行考錄有些沒必要在進行比較 ,屬於冗餘行為 多餘的操作 所以進行了一系列的優化
public class Solution { public int maxArea(int[] height) { int maxarea = 0, l = 0, r = height.length - 1; while (l < r) { maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l)); if (height[l] < height[r]) l++; else r--; } return maxarea; } }
謝謝大家觀看記得點個小心心 是我的動力謝謝