摘要: https://oj.leetcode.com/problems/permutation-sequence/一道简单题目。但是要一次写出bug-free的代码还是挺困难。子问题是固定了前i个数,对第i+1数,要求从他开始往后的第k个数即可。第i+1个数由以下两个因素确定:1)[i+2,n)这些数字共... 阅读全文
posted @ 2014-10-08 23:23 zombies 阅读(146) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/rotate-list/这道题目首先要理解什么是"rotate to the right y k",题目的那个例子看起来像是另后k个结点连接到链表的头上。当k>n时,此题被翻译为按照从右数第k个元素进行旋转,这个就很难理解了。这种情况... 阅读全文
posted @ 2014-10-08 21:15 zombies 阅读(172) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/implement-strstr/简单的调用string::find就可以解决。高级的可以自己实现KMP或者移动哈希算法。string::find返回一个size_t,如果没找到其返回值为-1(string::npos)。class ... 阅读全文
posted @ 2014-10-08 19:41 zombies 阅读(146) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/maximal-rectangle/一堆0,1矩阵中计算出由1组成的长方形的最大面积。使用了直方图求最大面积的算法。枚举每一行p,然后在将一行上的所有列看做朝i>p方向出发的直方图,然后在这个直方图上用栈存储递增序列的那个一次遍历算法... 阅读全文
posted @ 2014-10-08 19:35 zombies 阅读(361) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/palindrome-partitioning/这个题目很简单。递归搜索+枚举就能过,只要注意递归到0时,压入一个空数组即可。class Solution {public: int n; string s; bool... 阅读全文
posted @ 2014-10-08 17:44 zombies 阅读(107) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/palindrome-partitioning-ii/普通的DP很容易想到。但是复杂度为n^3会超时。一个重要的优化是使用一个数组pm[i][j]来记录[i,j)这段子串是否为回文。这个pm不需要预计算,通过调整遍历f(i)之前子串的... 阅读全文
posted @ 2014-10-08 17:38 zombies 阅读(108) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/merge-k-sorted-lists/自底向上的归并排序,用一个step控制需要合并次数,每次都把相邻的两个表合并成一个大表存在第一个表原先所在的位置上。然后step扩大两倍。需要注意的是最后一个表如果i+step>n-1,则说明... 阅读全文
posted @ 2014-10-08 16:35 zombies 阅读(151) 评论(0) 推荐(0) 编辑
摘要: https://oj.leetcode.com/problems/largest-rectangle-in-histogram/这道题的O(n)算法比较巧妙。基本思想是考虑某一个高度h[i],以这个高度为最高点的最大矩形两个边界高度l[i]和r[i]满足以下条件:1)h[l[i]]h[st.top(... 阅读全文
posted @ 2014-10-08 14:08 zombies 阅读(129) 评论(0) 推荐(0) 编辑