摘要:
思路: hash && dfs. 阅读全文
2014年9月8日 #
摘要:
思路:两两字符串挨着找。水题。 阅读全文
摘要:
思路: 贪婪。从两段开始,计算面积。每次走一步,若左端高低较低,从左端走;反之,从右端走。 阅读全文
摘要:
思路: 这题 ugly 之处,在于 '*' 给的很不明朗, 其实'c*', 表示 '*' 可以代表 'ccc...cc'。
对 '*' 的理解,若出现 p中出现 '*', 则要比较用 s 和 p 中 '*' 之前的那个元素比较,从左往右找出 s 中第一个与 p 之前的元素不同的元素。
(若全相同,例如, 之前那个元素为 '.', 则 '.*' (表示'.......^....')可以匹配任何 s 串)。 阅读全文
摘要:
思路: 注意符号,溢出。
思路: 注意负数和溢出情况都是 false. 其余情况,就是反转再判断,参考上题. 阅读全文
摘要:
方法1: 刚开始正着方三个,然后反着放两个,正着放两个。直到结束。(优)
方法二: 类似方法一,不过存下每个位置的字符应该放的地方。然后依次读入。 阅读全文
摘要:
注意: 前两个互换的时候,head 要改变位置。还要有一个 pre 指针。注意: 前两个互换的时候,head 要改变位置。还要有一个 pre 指针。思路: 双指针。 阅读全文
摘要:
思路: 类同 趣味算法之数学问题:题4.
两点需要注意: 1. 除数或被除数为最大负数时,转化为正数会溢出。2. divisor + divisor 可能会溢出。 阅读全文
摘要:
思路: 其实答案就是 C(m+n-2, m-1). 但是写程序利用动态规划会简单快捷。(给两个代码,第一个方便理解,第二个是基于第一个的优化)
思路:同上,只是最初初始化全 0 . 当前位置为 1 时,则当到达前位置的步数为 0. 阅读全文
摘要:
思路: 因为区间按 start 升序,且无重叠。所以插入区间和每一个元素分三种情况考虑。在左边,在右边(此两种情况直接拿区间出来)或者交叉(则更新插入区间范围)。 利用变量 out 判断新的区间是否已经放入。思路: 先按 start 排序。然后,判断当前区间和前一区间是否重叠。若没重叠,则放入;若重叠,则更新前一区间 end, 舍弃当前区间。 阅读全文
摘要:
思路: 可参考剑指offer:题20 阅读全文
摘要:
思路: 简单题。全排列。(注意各行各列不同可以直接确定住) 阅读全文
摘要:
方法1: 动态规划。(能走到下标为 n-1 位置时,就结束。) 方法二 : 从前往后跳,每一步长内选择选择能跳到下一步长最远的点。 第一个步长为 0 - A[0], 第二步长为 A[0] - max(0+A[0],..., A[0] + A[A[0]]),
从 0->A[0]->maxA[i](0+A[0],...,A[i] + A[A[i]], ... , A[0] + A[A[0]]);
方法三: 从后往前确定应该走的位置。(从前往后遍历,如果 i + A[i] >= last , 说明其第一个能走到最后, 更新 last = i). 阅读全文