想法一:
盛水最多,即左右兩邊中間區域的矩形面積最大,稱左側為a邊,右側為b邊。
比較直觀的解法是,固定某一邊(如a邊),依次比較b邊選取哪乙個所框住區域面積最大。因此,可以比較選取不同a邊所能框住面積的最大值,從而得到所有可能情況的最大值,及窮舉法。可通過雙層迴圈求解。
想法二:
在想法一基礎上,思考固定a邊,移動b邊求取最大面積(即內層迴圈)這一操作是否有規律可循。通過舉例可知,這一迴圈主要變數是a b之間的寬度。假設a邊恆定低於b邊,則a b距離最遠時框住矩形面積最大。鑑於此,可在優先保證矩形寬度最大時,比較選取不同a、b邊時矩形的面積。
1)設定游標left、right指向首尾兩邊;設定maxarea保持當前已知最大面積;
2)計算left、right間面積area,與當前已知最大面積maxarea比較,如更大,則更新maxarea;
3)比較left、right處兩邊高度h1、h2,若h14)重複2)、3)步驟直到left和right指向同處
1)窮舉
int maxarea(int* height, int heightsize)
int maxarea = 0;
int hgt = 0;
int area = 0;
for (int i = 1; i < heightsize; i++)
} return maxarea;
}
2)雙邊移動
int maxarea(int* height, int heightsize)
int left = 0;
int right = heightsize - 1;
int maxarea = 0;
int hgt = 0;
int area = 0;
while (left < right)
else
}return maxarea;
}
1、系統有多個變數時,先固定某個變數來對系統進行分析
2、善於發現系統中的規律,可通過舉例、對比、歸納來摸索
HydroOJ 每日一題 003
large texttt hydrooj 每日將從 hydrooj 主題庫及各大域中選出一題附以詳解在此處分享給各位使用者。coci2016 2017 contest 7 t6 kl ir 題目傳送門 首先讀懂題意,我們發現,對於當前正在彈奏的一段樂曲,有以下兩種情況 第二種情況比較簡單,對於第二種...
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...