- 博客(4)
- 收藏
- 关注
原创 最长上升(不下降)子序列
时间复杂度要求O(nlogn),从这个要求倒推可知需要用DP,且内层循环大概率要使用二分法。众所周知二分法用于有序数组,所以考虑辅助数组应该是一个有序上升(不下降)的。设数组d,d[k]表示长度为k的不下降子序列末尾元素的最小值。因为只有保证末尾是最小值,后续的数字接上才有可能是最优解。数组d只是一个辅助数组,和最后最长的不下降序列无关,甚至有可能在后面的数字排到前面去了。但是这并不影响,因为d...
2018-11-29 11:23:49 222
原创 162. Find Peak Element的C++解法
看到时间复杂度要求为对数立刻想到二分法。注意有一个边界条件,在LintCode中的寻找峰值也有一个类似条件,本质是一样的,即中间的数两边,增长的一端一定有峰值。class Solution {public: int findPeakElement(vector<int>& nums) { if (nums.size()==1) return 0;...
2018-11-27 16:59:54 288
原创 106. Construct Binary Tree from Inorder and Postorder Traversal的C++解法
使用递归: class Solution {public: TreeNode * buildTree(vector<int> &inorder, vector<int> &postorder) { // write your code here if (inorder.size() == 0) return NULL; int roo...
2018-11-19 16:14:16 142
原创 二叉树的前中后序遍历(递归&非递归)
中序递归:class Solution {public: vector<int> res; vector<int> inorderTraversal(TreeNode * root) { inorder(root); return res; } void inorder(TreeNode * root)...
2018-11-16 11:35:37 186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人