摘要:
思路:动态规划。
注意: /..., /.home, /..h2me, /ho_Me/... 为合法路径。
思路: 从头往尾读: 如是 / 和字符,数字,下划线 , 好判断。若是 '.', 则分情况即可。 阅读全文
2014年9月3日 #
摘要:
思路: 找到第一个 0 元素,记下其行和列。然后对其他 0 元素,分别将其投影在记下的行和列上(做标记)。遍历之后,对于所有行中的标记,将其所在列都置为 0; 对于所有列中标记,将其所在行都置为 0. (最后置标记的行和列为 0. 可含在上述步骤) 时间: O(n2), 空间 : O(1) 阅读全文
摘要:
思路: 从右上方开始,若小于 target, 则往下走;若大于 target, 对改行二分查找;若等 target, 返回 true.
思路: 斐波那契。此处用动归。 还可以使用矩阵二分乘。(剑指offer: 题9) 阅读全文
摘要:
思路:涉及到2点: 1. Hash, 保证查找为 O(1). 2. S 中设置两指针,根据长度确定右边指针位置;根据若去掉该字符,则该字符在 window 中出现次数将小于在 T 中出现的次数确定左边指针位置。 阅读全文
摘要:
思路: 1. 类似快排,走两遍(v=1, 分出0;v = 2,分出1)。 2. 计数排序。计数与重写。
思路:递归,每层从前往后逐步取元素。 阅读全文
摘要:
思路:深度优先搜索。注意每条路径搜索完之后,所有的 visited 重置为 false (未访问). 阅读全文
摘要:
思路:方法1:与前面相同,则删除。关键是移动元素不要出错。(不可取: 1360ms)
方法2:(优)不用移动元素。设置自增变量,如 A 中该元素与前一元素不同,则放入该变量位置,变量增 1 .(132 ms)
思路:该位置的前两个重复时,设置标志 repeat = true. 阅读全文
摘要:
思路:找最小值,然后两边分别二分查找。
最小值找法:1. 只要小于上一个值即可。第一个只要小于最后一个(但是线性方法较慢) 2. 同样利用二分查找。
思路: 同上,除了找最小值时,需要在 A[l] = A[mid] = A[h] 这种情况时,顺序走一遍找中值。 阅读全文
摘要:
思路: Easy. 依第二个开始,从前往后走一遍,若下一个相同,则删掉,迈过去,否则,走一步。
思路,由于前面几个相同时,比较麻烦,难以统一处理。故在头结点前面再加一个伪头结点(值小于头结点),这样前后走一遍即可。 阅读全文
摘要:
思路: 注意一点: 只要计算出以每个柱形为最小值的矩形面积即可。使用一个栈,栈内始终保存一个递增序列的 index,若是 新的柱形长度小于栈顶元素,则退出栈顶直到栈内元素的长度不大于新的柱形的长度为止,并且,对于每一个退栈元素,计算以其长度为最小值的面积。(宽的左边为其自身位置,右边为新到元素的位置)时间:O(n)
思路: 一行一行的记录下当前高度, 用上题的思路计算一下,即可。时间: O(n2) 阅读全文
摘要:
分析: 保持两个表头, 一个存大于等于 x 的结点,一个存小于 x 的结点。
注意:记住两个表尾,中间不能将其 next 指针设置为空。最后将存小值的表尾链接在另一个前面,两一个表尾 next 置为 NULL. 阅读全文
摘要:
分析: 从上往下考虑,比然存在一个位置,使得两个字符串分成相同的两个子串,他们位置前后相同或者前后相反。如此递归即可。能递归也就能动态规划记住子问题的解。但是本题没有使用动态规划也很快AC. 阅读全文