上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页
摘要: 总结1. 通过按位对比来判断, 没有更优的方法了 阅读全文
posted @ 2014-02-22 23:46 SangS 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 总结1. 要求栈的 push, pop, min 都是 o(1). 普通栈支持 Push Pop 操作, 且时间复杂度已为 o(1), 再加上 Min 函数, 时间复杂度已无法优化, 只能通过加空间来满足多的约束2. 另设一个栈, 保持当前最小的值. 两个栈同步 push, pop5 34 33 37 78 8S1 S2 阅读全文
posted @ 2014-02-22 23:44 SangS 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 总结1. 解法分为两步, 一是定位树的头结点, 二是两棵树作比较2. 两个数作比较, 包括比较两棵树是否相等, 或者两个数是否镜像, 算法的框架类似bool comp(root1, root2) 阅读全文
posted @ 2014-02-22 23:40 SangS 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 总结1. 之前不确定这种题的最终解法, 现在明确了, 就是一次快排 阅读全文
posted @ 2014-02-22 23:38 SangS 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 总结1. 求全排列的变形题, 有些隐晦, 没看出来 阅读全文
posted @ 2014-02-22 23:37 SangS 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 总结1. 负数右移会保持其符号. 比如 0x80000000 右移, 其对应的绝对值也是 0X80000000, 其右移一位并保持符号, 得到 0XC0000000. 符号位保持, 使得负数永远都无法右移到 02. 正解 x&(x-1), 有几个 1 就需要运算几次, 而不是稳定的 32 次 阅读全文
posted @ 2014-02-22 23:35 SangS 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 总结1. 斐波那契数列的变形题, 但是稍有隐晦, 有点意思2. 求解 f(3) 时, 最后一块矩形可以竖着放, 也可以两块矩形横着放, 分别对应于 f(2) 和 f(1)----------------0 | 1 | 2 | 3---------------- 阅读全文
posted @ 2014-02-22 23:31 SangS 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 总结1. 没有重复元素的旋转数组可用 logn 时间内求出结果. 解法有两个步骤, 先是求出发生旋转的点(以 array[0] 为支点求得), 然后用正常的二分查找给出结果2. 有重复元素元素的旋转数组时间复杂度最差会是 o(n). 讨论下复杂度上升的原因对于没有重复的旋转数组4 5 6 1 2 3pivot = 4mid = num[2] (5)mid > pivot ==> 旋转点在 num 右边以此为根据找到支点而假如旋转数组有重复元素, 比如1 0 1 1 1pivot = 1mid = num[2] = 1mid == pivot ==> 无法进行二分了, 只能顺序 阅读全文
posted @ 2014-02-22 23:27 SangS 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 总结1. 书中给出的最终解法是递归或用堆栈模拟递归. 之前我一直不清楚是否还有更优雅的做法, 看样是没了 阅读全文
posted @ 2014-02-22 23:14 SangS 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 总结1. 二维数组搜索题遇到两个了, 一个是 Leetcode 上 search in 2D matrix. 那道题比较简单, 因为下一行的所有元素大于上一行的. 这道题对二维矩阵的要求比较松, 起初我的想法是直接取中间, 将矩阵分成 3 个子部分再分别处理, 用主方法计算, 时间复杂度是 log(m*n) 级别的2. 书上对这道题的解答比较直接, 每次取右上角的元素与 target 作对比, 每次能够排除一行或一列3. Leetcode 上那道题做的时候要注意, 每次至少排除一行, 以防止无限循环题意在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请 阅读全文
posted @ 2014-02-22 23:12 SangS 阅读(406) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页