自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 357

原创 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_django_an_zhuang.html 2. 安装缺少的package:  pip install name_packege 2. How t

2017-03-05 04:43:33 322

转载 二分搜索

**区间缩小-> 剩下两个下标->判断两个下标** 1. 这两个下标根据先要end还是先要start先后顺序会有不同。 2. 如果没有target出现,令start = mid, end = mid不会影响结果。你只要让问题的规模缩小即可。因为start和end不管是否包括mid值都不影响最后的结果 **注:不要把缩小区间和得到答案放在一个循环里面,容易出问题,增

2017-02-09 11:40:02 432

原创 Remove Duplicate

Remove Duplicates from Sorted Array sorted 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 834

转载 Undirected Graph BFS/DFS

无向图BFS Clone 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 444

转载 双指针,窗口类

Minimum Size Subarray Sum (1)永远都是先用左右指针先处理,再移动左右指针(left (2)right永远指向下一个将要被处理的元素 (3)left永远指向当前等待处理的元素   (4) 循环条件right

2016-12-26 09:43:37 352

转载 记忆化搜索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 514

转载 subarray 划分类

(1) 所谓 “划分类” DP,是指给定原数组之后,将其划分为 k 个子数组,使其 sum / product 最大 / 最小的 DP 类问题。

2016-12-26 01:33:09 415

转载 Paint fence and house

Paint House (1) 二维dp = 两个属性: 一个属性代表房子的下标,另外一个属性代表那个下标房子的颜色。 (2) optimal substructure之间存在比较,所以需要存储3个状态,最后取min,max比较。而paint fance不存在比较,只在意四则运算关系,因此只有一个状态即可。

2016-12-25 10:22:39 268

转载 入门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 281

转载 动态规划入门

(1)用 DP 做的题大多数返回值是int/boolean, 求max/min,不能打乱原来输入顺序。 (2)动态规划有两个重要定义,一个叫 "optimal substructure",另一个叫 "overlap subproblem". 各种排序 / Tree 类问题中,都会用到 divide & conquer 的思想,去把问题分成若干个 "disjoint" subprob

2016-12-25 00:16:25 458

原创 回溯和dfs

回溯: 形状像树,状态A/B,回到上一层,选不选 DFS:逐字匹配(坐标移动),在bottom level的基础上加东西!

2016-12-23 08:08:06 757

转载 枚举法

Generate Parentheses 这题和二叉树其实挺像的,因为在每一个位置都只有两种可能 "(" 和 ")". (1)首先left如果大于0,就一直append left,相当于获得一个有不同长度left (的集合 (2)然后针对每个left,append上相应的right ),相当于获得right)的集合 Palindrome Partitioning 本质上是char

2016-12-21 04:46:28 569

转载 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 280

转载 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 477

转载 路径与路径和

Backtracking中对字符串的传递处理:用 StringBuilder 传递可以省去递归中新建的 string copies. StringBuilder 的backtrack也很简单,直接 setLength(int len)

2016-12-13 23:49:43 550

转载 quick select

https://discuss.leetcode.com/topic/14611/java-quick-select public 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 512

原创 快速排序

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 270

转载 BST

Closest Binary Search Tree Value 所谓 “最近的点”,可能是 parent ,可能是 child,可能在左边,也可能在右边。 所以一要存好 prev; 二要两边都探,不能沿着一边硬走。 使用二叉树的preoder traversal,不断update closet value public class Solution {

2016-12-07 02:38:15 442

转载 Tree, Min/Max/Balanced Depth

Maximum Depth of Binary Tree public 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 520

转载 三序遍历以及Vertical Order

Binary Tree Preorder Traversal preorder 直接用 stack;inorder 用 stack + cur;postorder 用 stack + cur + prev; 递归 ✓ 迭代 ✓ parent ✓ 复杂度 ✓ 迭代的写法过于 trivial 就不细说了,记得因为 stack 先入后出的特点,push 的

2016-12-06 08:23:50 524

转载 LCA 类问题

LCA 类问题 LCA 类问题是二叉树的高频问题之一; 有只给 root 的; 还有不给 root 给 parent pointer 的。 想面 FB,最好把各种二叉树问题的 recursion / iteration 还有 root / parent pointer 的写法都练熟才行,只 AC 是不够的。 下面这种向哪里走的问题,直接用尾递归解决

2016-12-06 05:56:47 312

转载 各种Binary Tree定义

参考 wikipedia 各类二叉树的定义 每个节点 children = 0 / 2,为 full binary tree 简单讲就是没有奇葩的单节点“拐弯”。 按 level order 从左到右依次(尽量)填满,为 complete binary tree.

2016-12-06 05:52:53 658

转载 无向DFS遍历

无向图的 DFS 要注意避免 “原路返回” 的情况 仅仅依靠设 state = 1 是不行的,所以 dfs 里最好有个参数,代表 “前一个节点”,这样在下一步的搜索中可以直接跳过,又避免了误判有环。 public class Solution { public boolean validTree(int n, int[][] edges) { int[] sta

2016-12-06 05:47:27 438

转载 无向图如何检测Cycle?

如何正确 detect cycle? 用 int[] 表示每个点的状态,其中 0 代表“未访问”; 1 代表“访问中”; 2 代表“已访问”; 如果在循环的任何时刻,我们试图访问一个状态为 “1” 的节点,都可以说明图中有环。 如何正确识别图中 connected components 的数量? 添加任意点,探索所有能到达的点,探索

2016-12-06 04:45:14 1622

转载 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 363

转载 拓扑排序的BFS做法

无论是 directed 还是 undirected Graph,其 BFS 的核心都在于 "indegree",处理顺序也是从 indegree 最小的开始。 算法如下: 1) 先用一个 HashMap 统计下所有节点的 indegree;  (值越高的,在拓扑排序中位置也就越靠后,因为还有 N = current indegree 的 parent node 们没有处理完。)

2016-11-30 06:24:56 585

转载 拓扑排序DFS做法

(1) 给定一个有向图,在拓扑排序中可以有很多个正确解,由若干小段的 list 组成。 (2) 正确的单序列顺序(具体到一个list之间的元素)。 (3) 正确的全序列顺序(list彼此之间的顺序,可以有多个) e.g., 以下图为例,不论先从哪个点开始 DFS,例如 dfs(belt)会得到一个 belt -> jacket 的 list; 但同时因为 pants ->

2016-11-30 05:40:01 755

转载 有向/无向图的基本性质和操作

1. LeetCode上很多算法题目都可以抽象成 “图” ,比如搜索类,tree类,迷宫问题,矩阵path问题等。 2. BFS和DFS比较 DFS 和 BFS 的比较 BFS 的time, space占用都以 branching factor为底, 到解的距离d为指数增长;空间占用上 Queue 是不会像 DFS 一样只存一条path的,而是从起点出发越扩越大,因此会有空间不够

2016-11-30 05:20:55 1586

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除