原创 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