1.逆序對及應用
2.學會應用排序演算法
3.理解單調佇列及應用
4.理解二分法
1.逆序對
設 a 為乙個有 n 個數字的有序集 (n>1),其中所有數字各不相同。如果存在正整數 i, j 使得 1 ≤ i < j ≤ n 而且 a[i] > a[j],則 這個有序對稱為 a 的乙個逆序對,也稱作逆序數。使用歸併排序演算法來求逆序對數最常用的方法,當然在應用逆序對時,需要分解題目解題步驟,運用逆序對來求解。
2.單調佇列
單調佇列,指有序的佇列,遞增或遞減的佇列,沒錯,可以理解為排完序的結果。我們回想歸併排序,在合併的時候就是對兩組單調佇列的操作。因此在我們解題的過程中,我們要充分利用佇列是否具有單調性這個特性,如果具有單調性,我們就能高效的對其進行合併操作。因此單調佇列不僅是輸出結果,也可能是中間過程必須要產生的臨時資料,這個臨時資料往往就是臨時空間的應用,會大大提公升演算法的時間複雜度,最原始的歸併排序就是中間分開形成小的單調佇列,然後不斷合併單調佇列的過程。這個最根本的思路要進一步擴充套件開來,根據題目的要求和資料的特徵,充分利用佇列的單調性,優化演算法。
3.二分法
題刷多了,大致上能總結出來,出現某某最大裡求最小的這類的描述,基本上就得上二分法。二分法需要滿足兩個條件,乙個是有界,乙個是單調。有界就是有邊界值,比如某個數字範圍,單調指單調佇列,佇列已排好序。比如我們的字典,a是左邊界,z是右邊界,總是a-z排好序,是典型的能使用二分法的案例。實際上我們在生活中就是用二分法定位某個要查詢的詞,如果給你一本無序的字典,讓你一頁一頁找,那個是列舉演算法。如果給的資料有英漢字典這個數量級,用列舉和用二分法的效率差別我們是可以想像的。給你乙個叫bee的單詞,我們大概是這樣的乙個操作過程,先翻到大概中音的位置,可能是m,你發現b之所以把二分法放在排序裡,是因為它是對單調佇列的一種典型應用,是演算法應用的典型。這裡需要區分的是像快排裡,也是右左開弓迴圈,按這裡的定義,那個應該不算二分法。二分法應該是對已排好序、有邊界佇列的某種業務進行遞迴或遞推業務的演算法。
python迴圈 綜合案例2
給乙個數值,讓使用者猜測 要求 1.數值相等,表示輸入正確,程式結束 2.如果不相等,則提示大了,還是小了。繼續讓使用者輸入 給乙個數值,讓使用者猜測 要求 1.數值相等,表示輸入正確,程式結束 2.如果不相等,則提示大了,還是小了。繼續讓使用者輸入 shuzi 1000 count 0 while...
ansible roles綜合案例
ansible自1.2版本引入的新特性,用於層次性,結構化地組織playbook。roles能夠根據層次結構自動裝載變數檔案 tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單來講,roles就是通過分別將變數 檔案 任務 模板及處理器放置於...
JQuery綜合案例(六)
需求 當頁面載入完成,3秒後,自動顯示廣告 廣告顯示5秒後,自動消失 分析 使用定時器,settimeout 執行一次定時器 jquery的顯示和隱藏動畫就是控制display 使用show,hide完成廣告顯示和隱藏 實現 function function adshow function adh...