題目一:
給定乙個矩陣,要求從左上角走到右下角,只能向右或者向下 走,沿途路過的數全部累加起來。 返回最小路徑和
關鍵想講壓縮陣列技巧的套路
題目二:
給定乙個陣列,求最長遞增子串行的長度
題目三:
kmp演算法擴充套件題目二
給定兩個字串,求最大公共子串行
題目四 :
給定兩個字串,求最大公共子串
題目五:
假設插入乙個字元的代價為insert,刪除代價為delete,替換代價為replace。 求字串a完全變成字串b的最低代價。
函式為:int f(string a, string b, int insert, int delete, int replace)
例如: a = abc b = abd insert = 3 delete = 4 replace = 5
最好的變動為:abc的c字元直接替換成d字元,變成abd,所以返回5,也就是乙個替換的代價。
a = abc b = abd insert = 3 delete = 4 replace = 100
題目六:
給定乙個字串,請把字串分割,分割出來的每乙個子串,都要求是回文串。 請問最少分割成幾部分可以完成這個要求。
題目七:
字串的交錯組成
【題目】 給定三個字串str1、str2和aim,如果aim包含且僅包含來自str1和str2的所有 字元,而且在aim中屬於str1的字元之間保持原來在str1中的順序,屬於str2的 字元之間保持原來在str2中的順序,那麼稱aim是str1和str2的交錯組成。實現 乙個函式,判斷aim是否是str1和str2交錯組成。
【舉例】 str1="ab",str2="12"。那麼"ab12"、"a1b2"、"a12b"、"1a2b"和"1ab2"等都 是str1和str2的交錯組成。
題目八:
括號字串的有效性和最長有效長度
【題目】 給定乙個字串str,判斷是不是整體有效的括號字串。
【舉例】 str="()",返回true;str="(()())",返回true;str="(())",返回true。 str="())"。返回false;str="()(",返回false;str="()a()",返回false。
【補充題目】 給定乙個括號字串str,返回最長的有效括號子串。
【舉例】 str="(()())",返回6;str="())",返回2;str="()(()()(",返回4。
題目九:(研究性質)
乙個陣列從中間切一刀,求兩邊部分的最大值的差的絕對值的最大值是多少。
筆記:1、常規手段:雙指標、滑動視窗、單調棧、預處理陣列、研究性質。
2、陣列壓縮技巧:觀察位置依賴。
隨筆:滑動視窗。單調性。預處理陣列(輔助陣列)
《演算法基礎》 3 5 鍊錶演算法
到目前為止,本章描述了一些用於建立和維護鍊錶的演算法,包括在鍊錶的開頭 結尾和中間新增項的演算法,查詢鍊錶中項的演算法和從鍊錶中刪除項的演算法。以下各節描述了利用其他方式來操作鍊錶的演算法。3.5.1 複製鍊錶 一些演算法重新排列鍊錶。本節和下一節將描述一些對鍊錶中的項進行排序的演算法。如果想保持原...
演算法 高階演算法
三數之和 3sum 第十一章 33 給出乙個有 n 個整數的陣列 s,在 s 中找到三個整數 a,b,c,找到所有使得 a b c 0 的三元組。注意事項 在三元組 a,b,c 要求 a b c,結果不能包含重複的三元組。樣例 如 s 你需要返回的三元組集合的是 1,0,1 1,1,2 an hig...
35 高階特性之iterable與iterator
這是因為python的iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next 函式實現按需計算下乙個資料,所以...