36. Valid Sudoku/37. Sudoku Solver - 数独问题-- backtracking 经典
摘要:题意: 经典的递归题, 要求:除了要求 横竖都填满 1~9外, 每个3*3也都要求满足 1~9 36. 数组可以部分填充, 问是否一个有效的 sudoku. 写了个好烧脑的 四重循环来check 3*3 的部分。 重点在于 用数组作为hash 。 然后对于 check 3*3 部分, 其实就是9个小
阅读全文
posted @
2018-11-25 05:27
KeepAC
阅读(283)
推荐(0)
351. Android Unlock Patterns -- back tracking 坑多
摘要:android 解锁,规则比较复杂,其中比较复杂的是 1) 从1 到3, 如果要穿越2, 那么2必须已经走过了 分析: 1,3,7,9 是对称的, 2,4,6,8 也是对称的, 5是单独的, 因此只要从 1,3,7,9 中选 1 ,结果 x4, 从 2,4,6,8 中选2 结果x4。 最后结果就是
阅读全文
posted @
2018-11-22 16:00
KeepAC
阅读(252)
推荐(0)
39. Combination Sum vs 377. Combination Sum IV --- 为何377 可以被 memoization,而39不可以
摘要:这两题 都是给定 Nums =[1 2 3] target = 4, 用nums 求和构建 target , 求出可能结果 不同点: 39 题: 认为 [1,1,2] 和 [2,1,1] 是重复结果 377 认为 [1,1,2] 和 [2,1,1] 是不同的结果。 因此画出两个题目的dfs tree
阅读全文
posted @
2018-11-22 04:40
KeepAC
阅读(234)
推荐(0)
Trie Tree的构建 -- find/search/searchAll/search Prefix
摘要:比如网上一个例子 一组单词,inn, int, at, age, adv, ant, 我们可以得到下面的Trie: 这里的节点上存的是一个单词,实际上,每个节点走过的路径就是该节点代表的单词. 下面这个链接 对Trie tree 比较好的code 模板,针对leetcode 的: https://w
阅读全文
posted @
2018-11-21 14:10
KeepAC
阅读(156)
推荐(0)
425. Word Squares -- back tracking + trie tree(TLE if not)
摘要:给你一个字符数组,每个单词长度一样,你从中选单词,组成的 二位数组中 横向和纵向 组成的一维数组都一样。 注意1: 单词可以重复被选择 注意2. 字符串数组可能非常的大,有1000 个 分析二: 假设单词当都为5, 第一个单词任意放, 第二个单词首字母 [1][0]位置 会被 第一个单词 [0][1
阅读全文
posted @
2018-11-21 05:12
KeepAC
阅读(195)
推荐(0)
383. Ransom Note/691. Stickers to Spell Word-- String, Map, back tracking-- 未完待续
摘要:383 easy 题,就是建立字母的hash 表 看第一个String 是否能被第二个String 所构建 canConstruct("aa", "aab") -> true 统计 第二个参数中每个字母的频率,可以用一个int[256] 建立hashmap, 然后统计 第一个String 中字母出现
阅读全文
posted @
2018-11-19 14:12
KeepAC
阅读(107)
推荐(0)
290/291 Word Pattern I and II -- 290: map 291 map+backtracking
摘要:290 为一个简单题,但还是有个小坑的。 题意: 给你一个pattern 和 一个用空格split 的的str, 问你两边是否匹配。 code 很简单,一看就是用Map, 去建立 char : string 之间的对应关系, 然而还得用一个 set 去保存已经存放的 string 了,例如: pat
阅读全文
posted @
2018-11-18 05:42
KeepAC
阅读(218)
推荐(0)
51/52. N-Queens -- 待优化
摘要:经典的八皇后问题, queen 可以攻击的范围: 水平,垂直,斜向, 放置 queen 让所有的queens 不在对方的攻击范围内,问有多少种方法或者产生相应的棋盘。 分析: 依次产生每一行的结果, 先在某行某个位置放一个结果,如果不能产生解 则back tracking 到上一行,重新放置。 以
阅读全文
posted @
2018-11-17 14:18
KeepAC
阅读(198)
推荐(0)
211 Add and Search Word - Data structure design--- back tracking, map, set 待续 trie
摘要:题意: 设计个字典查询系统, 有 add 和search 两种操作, add 是加入单词到字典里, search 时 可以用 点号通配符 ".", 点号可以匹配一个字母。 分析: 当search 时为 通配符时, 如果直接用back tracking产生 a-z, 比如 有7个点号, 就得生成 26
阅读全文
posted @
2018-11-17 06:57
KeepAC
阅读(142)
推荐(0)
79. Word Search/212. Word Search II--图的back tracking -- tier tree 待续
摘要:79题, 给你一个二维的board, 只能往上下左右四个方向走,为你是否能找到单词。 又改成了: 之所以写的不好,主要因为,应该把 边界条件和是否已经被访问 判断放在 下一次函数调用里,而不是本次里, 修改后的程序简单很多。 back traking 体现在 visted[i][j] = true
阅读全文
posted @
2018-11-17 04:30
KeepAC
阅读(162)
推荐(0)
357. Count Numbers with Unique Digits-- back tacking 或者数学问题
摘要:Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10^n. Example: Input: 2 Output: 91 Explanation: The answer shou
阅读全文
posted @
2018-11-16 13:03
KeepAC
阅读(116)
推荐(0)
667. Beautiful Arrangement II-- 类比526 但不能用back tracking
摘要:667 是很坑爹的一个题目,乍一看和 526 如出一辙, 526. Beautiful Arrangement 题意: 构造 [1,n]的排列,让每个 a[index] % index ==0 或者 index %a[index] ==0, 基本和 46 题一样,就是构造排列。 667题意: 给定两
阅读全文
posted @
2018-11-16 12:31
KeepAC
阅读(128)
推荐(0)
526. Beautiful Arrangement-- 和46. Permutations 一样 -back tracking
摘要:给一个数N, 产生 一个数列的排列 [1,2,..n] 这个数列符合如下条件 : 第index 个数满足两个条件的一个 :1. index % a[index] ==0 或者 2. a[index]%index ==0 分析: 和 46 permutations 完全一样, 只是需要在dfs 过程中
阅读全文
posted @
2018-11-16 06:11
KeepAC
阅读(134)
推荐(0)
306. Additive Number/842. Split Array into Fibonacci Sequence -- back tracking
摘要:842. Split Array into Fibonacci Sequence 和306几乎一样的代码,只是需要return 结果,而不是判断是否符合条件。 结果必须得是 Integer ,因此 字符串长度 不会 长于 Integer 长度10. 因此加了 for(int i=1; i<=(s.l
阅读全文
posted @
2018-11-16 05:38
KeepAC
阅读(176)
推荐(0)
293/294 Flip Game I and II -- back tracking ing
摘要:294. 在293基础上问你 starting player 是否一定能赢。 分析: 两个player 成为 play0 和 play1, 存在一条路径,让 play0 做出某个选择, play1 无论如何选择 最终都能导致 play1 fail 掉。
阅读全文
posted @
2018-11-16 04:27
KeepAC
阅读(164)
推荐(0)
267. Palindrome Permutation II --back tracking 以及palindrome 的优化方法ing
摘要:Input: [1,1,2] Output: [ [1,1,2], [1,2,1], [2,1,1] ] 然而写了一个类似47的解竟然TLE了, 优化策略1. 统计整个字符串中每个字母的个数,如果奇数个的个数>1 ,则所有的permutation 都不可能符合要求。 做了这个优化后写了如下code,
阅读全文
posted @
2018-11-15 03:24
KeepAC
阅读(147)
推荐(0)
131. Palindrome Partitioning--back tracking 和93. Restore IP Addresses本质一样
摘要:给你一个字符串, 输出他的pattitioning 都是 palindrome 的组合 Input: "aab" Output: [ ["aa","b"], ["a","a","b"] ] 和93 题实际上一样, 给你个字符串长度比较是 3, 你相当于有一个nums = {1,2,3} 的数组,每次
阅读全文
posted @
2018-11-15 03:11
KeepAC
阅读(119)
推荐(0)
31. Next Permutation-- 数组处理题
摘要:竟然被这么一道简单题折腾了好久,WA了很多次。 算法: 从后往前找,找到a[i-1] 时,从i 到len 中 最小的 但大于 a[i-1]的数,并且交换。 交换后把i 到 len 进行排序。 code 如下: 一开始下标没处理好,21行少了个break, 只得让24行变成 i+2 ,但这样又涵盖不了
阅读全文
posted @
2018-11-14 07:41
KeepAC
阅读(122)
推荐(0)
compareTo() and Sort
摘要:compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较String, Byte, Long, Integer等,比较String 时比较有用。 Integer x = 5; System.out.println(x.compareTo(3)); :1 System.o
阅读全文
posted @
2018-11-14 04:36
KeepAC
阅读(194)
推荐(0)
527. Word Abbreviation -- 贪心法,排序, Tier Tree -ing
摘要:input: ["like","god","internal","me","internet","interval","incension","intension","face","intrusion"] output: ["l2e","god","internal","me","i6t",&quo
阅读全文
posted @
2018-11-13 13:55
KeepAC
阅读(459)
推荐(0)
411. Minimum Unique Word Abbreviation--320+408 back tracking
摘要:这道题就是320和408两个题目合在一起: https://leetcode.com/problems/valid-word-abbreviation/description/ https://leetcode.com/problems/generalized-abbreviation/descri
阅读全文
posted @
2018-11-12 15:39
KeepAC
阅读(150)
推荐(0)
408. Valid Word Abbreviation --字符串处理
摘要:Given s = "internationalization", abbr = "i12iz4n": Return true.abbr 里数字代表相应的字符数,问字符串是否相等虽然是一个easy 的题但却有两个坑:1. abbr 结尾的地方是数字 例如: s= "internationalization" abbr= "i5a11o1" , 因此 return时得加上cout 来判断 ...
阅读全文
posted @
2018-11-12 13:28
KeepAC
阅读(183)
推荐(0)
320. Generalized Abbreviation-- back tracking and bit manipulation(待续)
摘要:需要注意的是, 如果某个节点已经是数字了,则接下来不能继续放数字 ,例如 "a11" 是不合法的。 先写了如下code ,在 input = "interaction" 时WA了, 而其他短字符串都可以过。 因为 最后一行 “curResult.deleteCharAt(curResult.leng
阅读全文
posted @
2018-11-12 08:56
KeepAC
阅读(190)
推荐(0)
89. Gray Code --迭代 和 back tracking 两种方法
摘要:产生格雷码,格雷码就是前后 两个数在二进制上只有一个bit 的差别 先看看格雷码的规律: n =0, [0] n=1, [0 1] n=2: 00 01 11 10 n=3: 000 001 011 010 110 111 101 100 可以发现规律, 比如 n=3 时相比于 n=2 时, 前面
阅读全文
posted @
2018-11-12 06:04
KeepAC
阅读(205)
推荐(0)
93. Restore IP Addresses--back tracking -- 类比39 Combination Sum
摘要:93 给你 一串数字,让你求出可能的IP 地址。 去掉了 nums 并且用remain 代替sum, 可以排名95%:
阅读全文
posted @
2018-11-12 04:39
KeepAC
阅读(93)
推荐(0)
17. Letter Combinations of a Phone Number--back tracking--字符数组
摘要:17 给出一个电话拨号盘,数字2-9代表一些字母,已知数字,求出所有字母的可能 例子 比如 求"23" , 2 >"abc" 3-->"def" 画出递归数其实非常简单: 和77. Combinations 本质上是一样的, 都是求所排列问题,但和数字排列不同的时,每一次需要遍历的数组不是固定的,而
阅读全文
posted @
2018-11-11 08:06
KeepAC
阅读(155)
推荐(0)
401. Binary Watch -- back tracking
摘要:题意: 给你个二进制手表,上面 有两排LED等,第一排为hour, 第二排为minutes。 告诉你表上有n 个LED 灯亮着,输出所有可能的时间。 题解: 把上面 10个 LED 等 抽象成10个数 0~9, 现在亮着 n (n<9) 个灯,表示从 nums 里 取出 n 个数的“排列” int[
阅读全文
posted @
2018-11-10 15:36
KeepAC
阅读(156)
推荐(0)
139/140. Word Break II/377. Combination Sum IV--back tracking +Memoization
摘要:和39. Combination Sum 不同的是,377 可以把不同排列的解认为是不同解,例如 [1,1,2] 和 [2,1,1] 是不同解,并且只需要求出解的个数。 例如 这里拿backtraing 每次把sum += nums[i] 再去掉 上一次的 sum -= num[i] 但不是一个好的
阅读全文
posted @
2018-11-10 14:51
KeepAC
阅读(230)
推荐(0)
784. Letter Case Permutation---back tracking
摘要:因为不熟悉 Java 字符串处理的一些function, 一开始写了一个特别丑陋的code: 用了Character 类里的function 后的code: 优化到了95%
阅读全文
posted @
2018-11-10 10:00
KeepAC
阅读(152)
推荐(0)
78/90 Subsets --back tracking
摘要:78 nums 元素没有重复, 求subsets, 共有 2^n个 90. 有重复元素情况下求组合数, 唯一需要注意的是如何去重:
阅读全文
posted @
2018-11-10 09:28
KeepAC
阅读(150)
推荐(0)
77. Combinations 39/40/216 Combination Sum 1 2 and 3 -- back tracking
摘要:77 从1~n 中产生K个组合, 因为1~n 没有重复元素,所以很简单 39. 前提: 1. 所有数都是positive的 2. 所有数没有duplicated的 并且一个数可以重复选择 40. 1. 条件变成了 数字有重复 , 有重复的处理方法都是先排序。 2. 并且返回结果仍然需要unique
阅读全文
posted @
2018-11-10 03:50
KeepAC
阅读(130)
推荐(0)
46/47 Permutations --back tracking 回溯法
摘要:参考 https://blog.csdn.net/wonner_/article/details/80373871 回溯算法的定义:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。 回溯算法实际上一个类似枚举的搜索尝
阅读全文
posted @
2018-11-08 16:32
KeepAC
阅读(220)
推荐(0)
104/110/111/559. Max/Min Depth of Binary/N Tree --二叉树或者N叉树深度
摘要:104. Maximum Depth of Binary Tree 求二叉树最大深度 return its depth = 3. 559. Maximum Depth of N-ary Tree 一开始写成这样, 结果怎么都不对: 因为 这里 maxDepth(child) 根本不会 hit roo
阅读全文
posted @
2018-11-08 13:07
KeepAC
阅读(240)
推荐(0)
105/106/889 Construct Binary Tree from 2 of Preorder/Inorder/Postorder Traversal
摘要:105. Construct Binary Tree from Preorder and Inorder Traversal https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal
阅读全文
posted @
2018-11-06 15:16
KeepAC
阅读(136)
推荐(0)
814. Binary Tree Pruning --Tree 的遍历
摘要:https://leetcode.com/problems/binary-tree-pruning/description/ 一颗树中有0和1的节点,要求删除所有可以被删除的0节点,直接看下图就明白了。 分析: 如果是叶子节点为0,那直接删除, 删除后 如果新的叶子节点 也是0 继续删除。。。 一开
阅读全文
posted @
2018-11-06 15:06
KeepAC
阅读(112)
推荐(0)
241. Different Ways to Add Parentheses/282. Expression Add Operators ---Divide and conquer求解表达式的值
摘要:241. https://leetcode.com/problems/different-ways-to-add-parentheses/description/ 282. https://leetcode.com/problems/expression-add-operators/descript
阅读全文
posted @
2018-11-06 04:58
KeepAC
阅读(87)
推荐(0)
224/227/772/150 Basic Calculator 1 2 3 and Evaluate Reverse Polish Notation
摘要:1. https://leetcode.com/problems/basic-calculator/description/ 2. https://leetcode.com/problems/basic-calculator-ii/description/ 3. https://leetcode.c
阅读全文
posted @
2018-11-06 04:01
KeepAC
阅读(117)
推荐(0)
20/678/32/22/856/301/921 Parentheses 括号匹配或者生成题
摘要:20. https://leetcode.com/problems/valid-parentheses/description/ 678. https://leetcode.com/problems/valid-parenthesis-string/description/ 32. https://
阅读全文
posted @
2018-11-04 01:20
KeepAC
阅读(187)
推荐(0)
stack 处理 pop时抛出异常
摘要:leetcode 20 :https://leetcode.com/problems/valid-parentheses/description/ 如果 stack 为空时,pop()会 抛出exception, 处理的方法如下:
阅读全文
posted @
2018-11-03 03:50
KeepAC
阅读(317)
推荐(0)