- 博客(29)
- 收藏
- 关注
原创 Django学习笔记
Model层开发:1. Model模型是网站的数据的信息源。2. 每个model对应数据库的一张Table表每个model都是一个class。3. 每个模型都是django.db.models.Model 的一个Python 子类.4. model的每个属性都表示table中的一个字段。https://python-ning.github.io/2015/12/23
2017-03-10 12:34:29 297
原创 Django入门
1. Django安装1.7pip install -v django==1.7.1 https://andrew-liu.gitbooks.io/django-blog/content/kai_fa_huan_jing_he_django_an_zhuang.html2. 安装缺少的package: pip install name_packege2. How t
2017-03-05 04:43:33 268
转载 二分搜索
**区间缩小-> 剩下两个下标->判断两个下标**1. 这两个下标根据先要end还是先要start先后顺序会有不同。2. 如果没有target出现,令start = mid, end = mid不会影响结果。你只要让问题的规模缩小即可。因为start和end不管是否包括mid值都不影响最后的结果**注:不要把缩小区间和得到答案放在一个循环里面,容易出问题,增
2017-02-09 11:40:02 374
原创 Remove Duplicate
Remove Duplicates from Sorted Arraysorted array, remove the duplicates in place, each element appear only once.(1) 这里的j指向的是非重的最后一个元素,每次拷贝前先j++Remove Duplicates from Sorted Array II
2017-01-17 01:14:10 746
转载 Undirected Graph BFS/DFS
无向图BFSClone Graph(1) BFS无向图需要有一个set visted,为什么树没有?因为图中可能会重复访问(又回去)。每次我们只考虑set中没有的node:注意,需要一个queue一个set,其它和bfs一个tree一样的。(2) hashmap这里主要是用于加快访问速度O(1),每次不用去list里面重新找node。(1) DFS做法:每次
2017-01-12 10:27:13 366
转载 双指针,窗口类
Minimum Size Subarray Sum(1)永远都是先用左右指针先处理,再移动左右指针(left(2)right永远指向下一个将要被处理的元素(3)left永远指向当前等待处理的元素 (4) 循环条件right
2016-12-26 09:43:37 283
转载 记忆化搜索DP
Longest Increasing Path in a Matrix(1) 本质上是DFS加上一个cache,每次在dfs前check一下cache,每次dfs后返回res前把res存到cache中方便下次直接调用。(2) optimal substructure是如何与n-1,或者n-2规模的子问题取得联系
2016-12-26 01:33:50 447
转载 subarray 划分类
(1) 所谓 “划分类” DP,是指给定原数组之后,将其划分为 k 个子数组,使其 sum / product 最大 / 最小的 DP 类问题。
2016-12-26 01:33:09 341
转载 Paint fence and house
Paint House(1) 二维dp = 两个属性: 一个属性代表房子的下标,另外一个属性代表那个下标房子的颜色。(2) optimal substructure之间存在比较,所以需要存储3个状态,最后取min,max比较。而paint fance不存在比较,只在意四则运算关系,因此只有一个状态即可。
2016-12-25 10:22:39 214
转载 入门House Robber
House Robber(1) 先从 Top-Down 的角度来想,如果我们定义 maxProfit(n) 为长度为 n 的 array 中所能得到的最大利益的话,不难看出在计算 maxProfit(n) 的时候,它的值只和前两个 subproblem 相关,即 maxProfit(n - 1) 和 maxProfit(n - 2). 关键是找到这个!!由此我们发现了 D
2016-12-25 01:34:00 225
转载 动态规划入门
(1)用 DP 做的题大多数返回值是int/boolean, 求max/min,不能打乱原来输入顺序。(2)动态规划有两个重要定义,一个叫 "optimal substructure",另一个叫 "overlap subproblem".各种排序 / Tree 类问题中,都会用到 divide & conquer 的思想,去把问题分成若干个 "disjoint" subprob
2016-12-25 00:16:25 363
转载 枚举法
Generate Parentheses这题和二叉树其实挺像的,因为在每一个位置都只有两种可能 "(" 和 ")".(1)首先left如果大于0,就一直append left,相当于获得一个有不同长度left (的集合(2)然后针对每个left,append上相应的right ),相当于获得right)的集合Palindrome Partitioning本质上是char
2016-12-21 04:46:28 502
转载 Subsets, Combination, Permutation, Combination Sum
1. Combination 类问题最重要的是去重, dfs() 函数里带一个 index 参数可以很好的解决这个问题。2. dfs里增加一个“前一个元素”的参数,每一层递归只考虑比上一个元素大的值。public class Solution { public List> combine(int n, int k) { List> res = new A
2016-12-14 03:14:00 227
转载 backtracking题目基本思路
1. 都要有个helper function,每个helper function中都要带上当前要考虑的因素。2. 非Tree是用 index 形式(array),Tree是用TreeNode形式3. 非Tree在 DFS 结束后回溯; Tree Paths 在 leaf node 回溯DFS + Backtracking 都有三个步骤:Add elementDFSRemov
2016-12-14 03:09:08 414
转载 路径与路径和
Backtracking中对字符串的传递处理:用 StringBuilder 传递可以省去递归中新建的 string copies.StringBuilder 的backtrack也很简单,直接setLength(int len)
2016-12-13 23:49:43 493
转载 quick select
https://discuss.leetcode.com/topic/14611/java-quick-selectpublic static int quickselect(int[] arr, int k){int start = 0, end = arr.length - 1, index = k - 1;while(start int pivot = partiti
2016-12-12 07:21:15 416
原创 快速排序
public static void quicksort(int[] a, int left, int right){ //为什么要有left和right呢,因为你的规模要缩小,如果和体现规模缩小?int pivot; //下次读取前assign value即可if(left pivot = partition(a, left, right);quicksort(a, lef
2016-12-12 06:01:55 224
转载 BST
Closest Binary Search Tree Value所谓 “最近的点”,可能是 parent ,可能是 child,可能在左边,也可能在右边。所以一要存好 prev;二要两边都探,不能沿着一边硬走。使用二叉树的preoder traversal,不断update closet valuepublic class Solution {
2016-12-07 02:38:15 357
转载 Tree, Min/Max/Balanced Depth
Maximum Depth of Binary Treepublic class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; return Math.max(maxDepth(root.left), maxDepth(root.right)) +
2016-12-07 00:43:27 452
转载 三序遍历以及Vertical Order
Binary Tree Preorder Traversalpreorder 直接用 stack;inorder 用 stack + cur;postorder 用 stack + cur + prev;递归 ✓迭代 ✓parent ✓复杂度 ✓迭代的写法过于 trivial 就不细说了,记得因为 stack 先入后出的特点,push 的
2016-12-06 08:23:50 433
转载 LCA 类问题
LCA 类问题LCA 类问题是二叉树的高频问题之一;有只给 root 的;还有不给 root 给 parent pointer 的。想面 FB,最好把各种二叉树问题的 recursion / iteration 还有 root / parent pointer 的写法都练熟才行,只 AC 是不够的。下面这种向哪里走的问题,直接用尾递归解决
2016-12-06 05:56:47 241
转载 各种Binary Tree定义
参考 wikipedia 各类二叉树的定义每个节点 children = 0 / 2,为 full binary tree简单讲就是没有奇葩的单节点“拐弯”。按 level order 从左到右依次(尽量)填满,为 complete binary tree.
2016-12-06 05:52:53 552
转载 无向DFS遍历
无向图的 DFS 要注意避免 “原路返回” 的情况仅仅依靠设 state = 1 是不行的,所以 dfs 里最好有个参数,代表 “前一个节点”,这样在下一步的搜索中可以直接跳过,又避免了误判有环。public class Solution { public boolean validTree(int n, int[][] edges) { int[] sta
2016-12-06 05:47:27 340
转载 无向图如何检测Cycle?
如何正确 detect cycle?用 int[] 表示每个点的状态,其中0 代表“未访问”;1 代表“访问中”;2 代表“已访问”;如果在循环的任何时刻,我们试图访问一个状态为 “1” 的节点,都可以说明图中有环。如何正确识别图中 connected components 的数量?添加任意点,探索所有能到达的点,探索
2016-12-06 04:45:14 1428
转载 Course Schedule I&II
Course Schedule这题的本质就是,给你一个代表 graph 的 adjacency array,判断 graph 是否有环。其实和 Graph Valid Tree 非常像。DFS 找环性能优异,DFS找环相当于在DFS的基础上加个visited数组,每次访问某个点的时候判断该点的visit数值,如果为0表示没有被访问过,1表示有环,2表示访问完成。public cla
2016-11-30 11:05:51 299
转载 拓扑排序的BFS做法
无论是 directed 还是 undirected Graph,其 BFS 的核心都在于 "indegree",处理顺序也是从indegree 最小的开始。算法如下:1) 先用一个 HashMap 统计下所有节点的 indegree; (值越高的,在拓扑排序中位置也就越靠后,因为还有 N = current indegree 的 parent node 们没有处理完。)
2016-11-30 06:24:56 513
转载 拓扑排序DFS做法
(1) 给定一个有向图,在拓扑排序中可以有很多个正确解,由若干小段的 list 组成。(2) 正确的单序列顺序(具体到一个list之间的元素)。(3) 正确的全序列顺序(list彼此之间的顺序,可以有多个)e.g.,以下图为例,不论先从哪个点开始 DFS,例如 dfs(belt)会得到一个 belt -> jacket 的 list; 但同时因为 pants ->
2016-11-30 05:40:01 681
转载 有向/无向图的基本性质和操作
1. LeetCode上很多算法题目都可以抽象成 “图” ,比如搜索类,tree类,迷宫问题,矩阵path问题等。2. BFS和DFS比较DFS 和 BFS 的比较BFS 的time, space占用都以 branching factor为底, 到解的距离d为指数增长;空间占用上 Queue 是不会像 DFS 一样只存一条path的,而是从起点出发越扩越大,因此会有空间不够
2016-11-30 05:20:55 1426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人