原创 算法導論_基數排序學習筆記

算法導論之基數排序 例子的簡單實現:對7個三位數的排序,中間用到計數排序,每次排序獲得位置的index,然後再重排數組a。其中數組copya用於獲得數組a中的每一位。 #include <iostream> using namespa

原创 算法競賽入門 暴力求解法 7.1.2 最大乘積

暴力破解:第一次循環1,2,3,4,5..n;第二次循環2,3,4,5..n,直到n-1次循環。 #include <iostream> #include <vector> using namespace std; int main

原创 算法競賽入門 5.3.1 6174問題

知識點:1.排序(冒泡法); 2.字符串逆轉(每次首尾交換,或者用一個等大的數組遍歷一次); 3.標記是否是重複數字(用10000+數組存儲出現的數字,數字爲下標,用1標記存在,或者用數字爲內容,但需要每次查找遍歷一次數組) 實現代碼:

原创 算法導論_計數排序學習筆記

計數排序學習筆記 時間複雜度爲Θ(n)+Θ(k)=Θ(n+k);限制爲需要知道待排序數組中元素的取值範圍,以確定k值。 //注意下標,數組C[]的下標範圍爲0~k,包括k,因爲要排序的數字的範圍是0~k //數組b的下標範圍爲1~n,

原创 算法入門 6.1.2 鐵軌

重點:stack和queue 1.先檢查兩個隊列頭是否相等,若不等,檢查出隊列頭和棧頭是否相等,若不等,檢查入隊列是否爲空,若非空入棧,否則跳出循環 2.每次訪問入隊列和棧首元素時,注意其是否存在; 實現代碼: #include <io

原创 【leetcode】remove-duplicates-from-sorted-array

//2014年8月26日18:51:17 //2014年8月26日18:57:24 //遍歷一次即可,關鍵是用兩個指示位置的變量 #include <iostream> using namespace std; class Solut

原创 【leetcode】path-sum

//先根遍歷,每次修改sum值 //2014年8月23日10:52:51 //2014年8月23日11:07:50 #include <iostream> using namespace std; struct TreeNode

原创 【leetcode】unique-binary-search-trees

//2014年8月24日10:09:19 //2014年8月24日10:23:27 //公式,迭代,效率不高 //f(n) = 2f(n-1)+2f(1)f(n-2)+2f(2)f(n-3)+...+2f((n-1)/2-1)f((n-

原创 【leetcode】best-time-to-buy-and-sell-stock

//2014年8月26日13:55:48 //2014年8月26日14:12:22 //從前向後遍歷一次,記錄截止到目前的最低價,計算可能受益,更新最大受益,更新最低價 //出錯點是:受益爲負值時返回0 #include <iostrea

原创 樹的非遞歸遍歷

樹的非遞歸遍歷 1. 中根遍歷 思路: 一直遍歷左子樹 p = p->left; 直到p爲空,此時訪問棧頂元素,棧頂元素出棧,開始遍歷右子樹p = p->right; 遍歷右子樹的左子樹 出棧時訪問 /** 1. Definiti

原创 【leetcode】swap-nodes-in-pairs

//2014年8月25日22:57:33 //2014年8月25日23:11:30 //水題 鏈表操作 #include <iostream> using namespace std; struct ListNode { i

原创 【leetcode】merge-sorted-array

水題,關鍵是從後向前遍歷 //2014年8月25日21:35:09 //從後往前遍歷 //2014年8月25日21:45:04 #include <iostream> using namespace std; class Soluti

原创 【leetcode】binary-tree-maximum-path-sum

後序遍歷;注意兩個值,1.以該節點爲最高節點的路徑上所有節點的和;2.通過該節點(或者一直向下)孩子路徑的最大值; 前者不需要保存,只是爲了求解,每次跟最大值比較保留較大值即可,後者爲了便於計算上層節點的爲最高父節點的和,需要暫時保存;

原创 算法競賽入門 7.1.4 雙基迴文數

暴力破解,沒有特別要注意的 #include <iostream> #include <vector> using namespace std; int Test(int n); int main() { int n;

原创 【leetcode】merge-two-sorted-lists

鏈表操作 //水題 練手 鏈表 //2014年8月25日19:17:20 // #include <iostream> using namespace std; struct ListNode { int val;