进阶之路

首页 新随笔 管理

2014年9月8日 #

摘要: 思路: hash && dfs. 阅读全文
posted @ 2014-09-08 13:09 进阶之路 阅读(259) 评论(0) 推荐(0) 编辑

摘要: 思路:两两字符串挨着找。水题。 阅读全文
posted @ 2014-09-08 13:02 进阶之路 阅读(183) 评论(0) 推荐(0) 编辑

摘要: 思路: 贪婪。从两段开始,计算面积。每次走一步,若左端高低较低,从左端走;反之,从右端走。 阅读全文
posted @ 2014-09-08 12:55 进阶之路 阅读(174) 评论(0) 推荐(0) 编辑

摘要: 思路: 这题 ugly 之处,在于 '*' 给的很不明朗, 其实'c*', 表示 '*' 可以代表 'ccc...cc'。 对 '*' 的理解,若出现 p中出现 '*', 则要比较用 s 和 p 中 '*' 之前的那个元素比较,从左往右找出 s 中第一个与 p 之前的元素不同的元素。 (若全相同,例如, 之前那个元素为 '.', 则 '.*' (表示'.......^....')可以匹配任何 s 串)。 阅读全文
posted @ 2014-09-08 12:19 进阶之路 阅读(242) 评论(0) 推荐(0) 编辑

摘要: 思路: 注意符号,溢出。 思路: 注意负数和溢出情况都是 false. 其余情况,就是反转再判断,参考上题. 阅读全文
posted @ 2014-09-08 12:13 进阶之路 阅读(175) 评论(0) 推荐(0) 编辑

摘要: 方法1: 刚开始正着方三个,然后反着放两个,正着放两个。直到结束。(优) 方法二: 类似方法一,不过存下每个位置的字符应该放的地方。然后依次读入。 阅读全文
posted @ 2014-09-08 12:08 进阶之路 阅读(232) 评论(0) 推荐(0) 编辑

摘要: 注意: 前两个互换的时候,head 要改变位置。还要有一个 pre 指针。注意: 前两个互换的时候,head 要改变位置。还要有一个 pre 指针。思路: 双指针。 阅读全文
posted @ 2014-09-08 11:41 进阶之路 阅读(193) 评论(0) 推荐(0) 编辑

摘要: 思路: 类同 趣味算法之数学问题:题4. 两点需要注意: 1. 除数或被除数为最大负数时,转化为正数会溢出。2. divisor + divisor 可能会溢出。 阅读全文
posted @ 2014-09-08 11:21 进阶之路 阅读(151) 评论(0) 推荐(0) 编辑

摘要: 思路: 其实答案就是 C(m+n-2, m-1). 但是写程序利用动态规划会简单快捷。(给两个代码,第一个方便理解,第二个是基于第一个的优化) 思路:同上,只是最初初始化全 0 . 当前位置为 1 时,则当到达前位置的步数为 0. 阅读全文
posted @ 2014-09-08 11:12 进阶之路 阅读(228) 评论(0) 推荐(0) 编辑

摘要: 思路: 因为区间按 start 升序,且无重叠。所以插入区间和每一个元素分三种情况考虑。在左边,在右边(此两种情况直接拿区间出来)或者交叉(则更新插入区间范围)。 利用变量 out 判断新的区间是否已经放入。思路: 先按 start 排序。然后,判断当前区间和前一区间是否重叠。若没重叠,则放入;若重叠,则更新前一区间 end, 舍弃当前区间。 阅读全文
posted @ 2014-09-08 11:02 进阶之路 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 思路: 可参考剑指offer:题20 阅读全文
posted @ 2014-09-08 10:52 进阶之路 阅读(286) 评论(0) 推荐(0) 编辑

摘要: 思路: 简单题。全排列。(注意各行各列不同可以直接确定住) 阅读全文
posted @ 2014-09-08 10:47 进阶之路 阅读(209) 评论(0) 推荐(0) 编辑

摘要: 方法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). 阅读全文
posted @ 2014-09-08 10:39 进阶之路 阅读(158) 评论(0) 推荐(0) 编辑