2013年9月30日

Generate Parentheses

摘要: 递归。传入的前两个参数分别表示未分配的左括号数和未匹配的左括号数。 1 void fill(int numOfRemain, int numToMatch, string tmp, vector &result){ 2 if(numOfRemain == 0 && numToMatch == 0){ 3 result.push_back(tmp); 4 return; 5 } 6 if(numOfRemain > 0){ 7 tmp += '('; 8 ... 阅读全文

posted @ 2013-09-30 20:51 waruzhi 阅读(166) 评论(0) 推荐(0) 编辑

Path Sum

摘要: 1 bool hasPathSum(TreeNode *root, int sum) {2 // Start typing your C/C++ solution below3 // DO NOT write int main() function4 if(root == NULL)5 return false;6 if(sum == root->val && root->left==NULL && root->right==NULL)7 return true;8 ... 阅读全文

posted @ 2013-09-30 20:15 waruzhi 阅读(152) 评论(0) 推荐(0) 编辑

Plus One

摘要: 1 vector plusOne(vector &digits) { 2 // Start typing your C/C++ solution below 3 // DO NOT write int main() function 4 int n = digits.size(); 5 int i,carry=1; 6 for(i = n-1; i >= 0; i--){ 7 if(carry == 0) 8 break; 9 ... 阅读全文

posted @ 2013-09-30 20:07 waruzhi 阅读(167) 评论(0) 推荐(0) 编辑

Valid Parentheses

摘要: 用一个栈存储字符串中的括号,每次读新的字符的时候,如果在栈顶发现有与它相匹配的括号,则从栈顶弹出,否则入栈。一次遍历之后,如果发现栈不为空,说明不匹配。 1 bool isValid(string s) { 2 // Start typing your C/C++ solution below 3 // DO NOT write int main() function 4 stack aStack; 5 int i, l = s.length(); 6 for(i = 0; i < l; i++){ 7 ... 阅读全文

posted @ 2013-09-30 19:58 waruzhi 阅读(151) 评论(0) 推荐(0) 编辑

Permutations

摘要: 使用递归的方式,逐步将后一个数字填充进去,所以第n个数字填充时有n个位置可放。注意在跳出低估的时候,要恢复之前的状态。 void fill(vector > &result, vector &tmp, vector &num, int step, int total){ if(step > total){ result.push_back(tmp); return; } int i, l = tmp.size(); for(i=0; i > permute(vector &num) { ... 阅读全文

posted @ 2013-09-30 19:36 waruzhi 阅读(169) 评论(0) 推荐(0) 编辑

Integer to Roman

摘要: 参照Roman to Integer里罗马数字的使用方法,链接如下http://www.cnblogs.com/waruzhi/p/3332238.htmlstring intToRoman(int num) { // Start typing your C/C++ solution below // DO NOT write int main() function string result; int t = num/1000; while(t>0){ t--; resu... 阅读全文

posted @ 2013-09-30 11:27 waruzhi 阅读(125) 评论(0) 推荐(0) 编辑

Gas Station

摘要: 1、基本思路 依次从每个加油站开始加,判断是否满足条件。O(n^2)的复杂度,会超时。2、O(n)的方法 一种思路是,如果从 i 到 j 的油的余量和小于0,则开始点必定在 i 左边,所以如果小于0,开始点左移,大于0,到达的位置右移; 1 int canCompleteCircuit(vector &gas, vector &cost) { 2 // Note: The Solution object is instantiated only once and is reused by each test case. 3 int begin = 0... 阅读全文

posted @ 2013-09-30 11:02 waruzhi 阅读(295) 评论(0) 推荐(0) 编辑

Binary Tree Level Order Traversal II

摘要: 思路同上题,不过在结束的时候用另一个vector把结果反向拷了出来。不知道有没有其他的办法。vector > levelOrderBottom(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector > result; result.clear(); if(root == NULL) return result; vector tmp; ... 阅读全文

posted @ 2013-09-30 10:37 waruzhi 阅读(180) 评论(0) 推荐(0) 编辑

Binary Tree Level Order Traversal

摘要: 思路比较简单,典型的宽度优先遍历,但是在使用vector的时候出现了些问题。先上ac代码: vector > levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector > result; if(root == NULL) return result; result.clear(); vector tmp; ... 阅读全文

posted @ 2013-09-30 10:11 waruzhi 阅读(221) 评论(0) 推荐(0) 编辑

导航