https://leetcode-cn.com/problems/container-with-most-water/
1.窮舉法
用雙循環(huán)遍歷每一個元素
class Solution {
? ? ? ? public int maxArea(int [] a){
? ? ? ????? int max = 0 ;?
? ? ? ????? for ( int i = 0 ; i < a.length - 1 ; ++i ) {
? ? ? ? ? ? ? ? for ( int j = i + 1 ; j < a.length ; ++j ){? ? ? ? //這兩句要寫熟
? ? ? ? ? ? ? ? ? ? int area = ( j - i ) * Math.min ( a[i], a[j] );
? ? ? ? ? ? ? ? ? ? max = Math.max ( area, max);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return max;
? ? ? ? }
}
2.從底最大的情況開始考慮碘梢,每次只移動較小的邊界呐籽,因為目的是找更大的面積什往,(在底邊變小的前提下,所以要找更大的高)堂鲜。
class Solution {?
????????public int maxArea(int [] a){
? ? ? ? ????int max = 0 ;
? ? ? ????? for ( int i = 0 , int j = a.length ; i < j ) {
? ? ? ? ? ? ????int minHeight = a[i] < a[j] ? a[i++] : a[j--];
? ? ? ? ? ????? int area = ( j - i + 1 ) * minHeight ;? ?//這句話本身是不用+1的,但因為在前一個語句中i/j的值? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 已經(jīng)發(fā)生了變化趁餐,要注意俐芯。
? ? ? ? ? ????? max = Math.max ( area , max );
? ? ? ? ????}?
? ? ? ? ? ? return max;
????????}
}? ?