原创 Subsets, Combination, Permutation, Combination Sum
1. Combination 類問題最重要的是去重, dfs() 函數裏帶一個 index 參數可以很好的解決這個問題。 2. dfs裏增加一個“前一個元素”的參數,每一層遞歸只考慮比上一個元素大的值。 public class Sol
原创 Tree, Min/Max/Balanced Depth
Maximum Depth of Binary Tree public class Solution { public int maxDepth(TreeNode root) { if(root == null)
原创 Django入門
1. Django安裝1.7 pip install -v django==1.7.1 https://andrew-liu.gitbooks.io/django-blog/content/kai_fa_huan_jing_he_dja
原创 動態規劃入門
(1)用 DP 做的題大多數返回值是int/boolean, 求max/min,不能打亂原來輸入順序。 (2)動態規劃有兩個重要定義,一個叫 "optimal substructure",另一個叫 "overlap subproblem
原创 Django學習筆記
Model層開發: 1. Model模型是網站的數據的信息源。 2. 每個model對應數據庫的一張Table表<---->每個model<---->都是一個class。 3. 每個模型都是django.db.models.Model
原创 路徑與路徑和
Backtracking中對字符串的傳遞處理:用 StringBuilder 傳遞可以省去遞歸中新建的 string copies. StringBuilder 的backtrack也很簡單,直接setLength(int len)
原创 subarray 劃分類
(1) 所謂 “劃分類” DP,是指給定原數組之後,將其劃分爲 k 個子數組,使其 sum / product 最大 / 最小的 DP 類問題。 (2)prevSum是連續的,起點不一定,終點一定是current(local最優,算上當
原创 Remove Duplicate
Remove Duplicates from Sorted Array sorted array, remove the duplicates in place, each element appear only once. (1) 這
原创 記憶化搜索DP
Longest Increasing Path in a Matrix (1) 本質上是DFS加上一個cache,每次在dfs前check一下cache,每次dfs後返回res前把res存到cache中方便下次直接調用。 (2) opti
原创 BST
Closest Binary Search Tree Value 所謂 “最近的點”,可能是 parent ,可能是 child,可能在左邊,也可能在右邊。 所以一要存好 prev; 二要兩邊都探,不能沿着一邊硬走。 爲什麼寫成兩個
原创 Undirected Graph BFS/DFS
無向圖BFS Clone Graph (1) BFS無向圖需要有一個set visted,爲什麼樹沒有?因爲圖中可能會重複訪問(又回去)。 每次我們只考慮set中沒有的node:注意,需要一個queue一個set,其它和bfs一個tr
原创 快速排序
public static void quicksort(int[] a, int left, int right){ //爲什麼要有left和right呢,因爲你的規模要縮小,如果和體現規模縮小?in