1957

无聊蛋疼的1957写的低端博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 2 3 4 5 6 7 8 ··· 22 下一页

2014年1月20日

摘要: 万能的DFS+record啊不过划分状态的时候还是要注意下,开始用了错误的方法,以至于TLE从头枚举,直到一个回文串,在这里就可以做一个断开操作大概是这样每个地方都可以不断开如果可以断开就断开去dfs发现代码很SB有问题。。。要重写int record[5000][5000];class Solution {public: int minCut(string s) { if(s.size() > 500) return 1; //调试的时候加的,结果过了。。。呵呵。。。这样的肯定不行 for(int i = 0 ; i = s.size()) { ... 阅读全文

posted @ 2014-01-20 16:10 1957 阅读(289) 评论(0) 推荐(0) 编辑

摘要: leetcode上通过率最低的了...不只要找最短路,还要记录路径每次遇到记录路径的感觉都好麻烦TT,不太喜欢记录路径...依然是BFS,记录每个的前驱节点father[x],当然这个father有多个还有个问题就是...如果BFS的话到end肯定有很多路径,那最短的是啥呢?所以我们采用分层遍历,只要到了end,那么这一层所有的都是最短的(一样长然后用DFS遍历father,从end到start注意就是DFS在恢复状态的时候一定要考虑完,我之前就是在前面return了但是后面才是恢复状态,导致错误class Solution {public: vector> findLadders(st 阅读全文

posted @ 2014-01-20 14:05 1957 阅读(2932) 评论(0) 推荐(0) 编辑

2014年1月19日

摘要: 5555,又是DP。。。然后我又是DFS+record其实关键是理解题意,写出DFS代码就好了吧。。。。。map,int> record;class Solution {public: int numDistinct(string S, string T) { record.clear(); return vis(S, 0 , S.size() , T , 0 , T.size()); }private: int vis(string s , int s1 , int e1 , string t , int s2 , int e2) { ... 阅读全文

posted @ 2014-01-19 23:12 1957 阅读(298) 评论(0) 推荐(0) 编辑

摘要: Morris遍历就是利用节点的right指针当前节点为curr1. left为空,说明curr是子节点,所以输出,并且curr = curr->right2. left不为空,tmp=curr->left 然后一直找tmp的右子树,知道tmp->right为空或者等于curr 如果为空,说明还木有处理过,tmp->right = curr,然后curr = curr -> left 不为空,说明前面已经处理过鸟,输出这个节点,然后设为空, curr = curr -> right(因为left遍历完了http://www.cnblogs.com/AnnieK 阅读全文

posted @ 2014-01-19 21:06 1957 阅读(162) 评论(0) 推荐(0) 编辑

摘要: 递归/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), le... 阅读全文

posted @ 2014-01-19 19:52 1957 阅读(135) 评论(0) 推荐(0) 编辑

摘要: DFS,用一个变量来记录方向从左往右就是push_back从右往左就是push_front ,木有这个函数就用vec.insert(vec.begin() , val),虽然效率不怎样/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: ve... 阅读全文

posted @ 2014-01-19 00:15 1957 阅读(155) 评论(0) 推荐(0) 编辑

2014年1月18日

摘要: 还是DFS啊,我是dp弱逼。。就是不懂DP,快哭了都DFS+备忘录。。避免重复状态的计算PS.map,unordered_map还是有区别的map要严格的弱序unordered_map要求能hashtypedef string::const_iterator Iter;map , bool> record;class Solution {public: bool isInterleave(string s1, string s2, string s3) { if(s1.size() + s2.size() != s3.size()) return false; ... 阅读全文

posted @ 2014-01-18 23:12 1957 阅读(337) 评论(0) 推荐(0) 编辑

摘要: 题不难,但是开始没理解意思用DFS就过了枚举从哪儿断开的有两种情况1、正常的2、交换了的result = isScramble(s1.substr(0,i) , s2.substr(0,i)) && isScramble(s1.substr(i) , s2.substr(i));这是正常的比较result = isScramble(s1.substr(0,i) , s2.substr(s1.size()-i,i)) && isScramble(s1.substr(i) , s2.substr(0 , s1.size()-i));这是交换了的比较class Sol 阅读全文

posted @ 2014-01-18 21:11 1957 阅读(898) 评论(0) 推荐(0) 编辑

摘要: * / mod 不能用其实想想,乘法不就是加法嘛a*b = b个a相加x / y = n 其实是x = ny + r我们来累加y,知道ny >= x就可以求的n了但是这里又有个麻烦那的就是。。。累加的话,按我们的条件肯定是多算了一次啦判断ny == x 不等就减去一次就ok不过这样的结果就是TLEINT_MAX和1,显然要枚举INT_MAX次那肿么办。。。一次一次的枚举确实有点2。。。但就用增量吧,每次*2这样的想法是对的但是。。问题是,累加。。。最后还是多算,觉得处理起来很麻烦啊那换个似乎。。。我们用x每次减去y直到x (dividend)); long long n2 = a... 阅读全文

posted @ 2014-01-18 20:20 1957 阅读(2874) 评论(0) 推荐(0) 编辑

2014年1月17日

摘要: 不知道为毛,在函数里面每次开vector作为next就要re。。。改了才过,但是代码不好看啊。。。用kmp求解kmp的重点就是next数组next[i]表示i结尾的后缀匹配的最长前缀如果i匹配失败,我们就不用从头开始匹配的,因为i前面那段已经匹配了利用next来移动这个串的位置http://whocouldthat.be/visualizing-string-matching/这个演示不错vector f(1000000);class Solution {public: char *strStr(char *haystack, char *needle) { if(hays... 阅读全文

posted @ 2014-01-17 23:28 1957 阅读(194) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 22 下一页