2012年12月19日
摘要: #include <iostream>#include <string>using namespace std;struct TreeNode{ int data; TreeNode *lchild; TreeNode *rchild;};TreeNode *findMin(TreeNode *&root){ while (root->lchild) root = root->lchild; return root;}void DeleteNode(TreeNode *root, int x){ if (!root) return... 阅读全文
posted @ 2012-12-19 22:53 kkmm 阅读(350) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <vector>using namespace std;class Solution {public:/*解释:首先,因为能买2次(第一次的卖可以和第二次的买在同一时间),但第二次的买不能在第一次的卖左边。所以维护2个表,f1和f2,size都和prices一样大。意义:f1[i]表示 -- 截止到i下标为止,左边所做交易能够达到最大profit;f2[i]表示 -- 截止到i下标为止,右边所做交易能够达到最大profit;那么,对于f1 + f2,寻求最大即可。*/ int maxProfit(vector< 阅读全文
posted @ 2012-12-19 21:13 kkmm 阅读(4698) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <vector>using namespace std;//总体思路,每当有一个上升趋势,就要抓住它//那么维护2个迭代器,left和right,left指向阶段性最低(靠左),right指向阶段性最高(靠右)//需要注意的是迭代器在使用的过程中不要超出了范围,例如下面注释部分特别需要注意class Solution {public: int maxProfit(vector<int> &prices) { vector<int>::const_iterator left = pri 阅读全文
posted @ 2012-12-19 21:11 kkmm 阅读(266) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <vector>#include <stack>using namespace std;//简单的DP算法class Solution {public: int maxProfit(vector<int> &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function int size = prices.size(); if (!size) r... 阅读全文
posted @ 2012-12-19 21:10 kkmm 阅读(170) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <vector>#include <stack>#include <queue>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public: vector<vector<int> > levelOrderBottom( 阅读全文
posted @ 2012-12-19 00:00 kkmm 阅读(197) 评论(0) 推荐(0) 编辑