- 博客(27)
- 资源 (9)
- 收藏
- 关注
原创 132. Palindrome Partitioning II
class Solution { private: vector<string> curlist; int mincut=INT_MAX; bool judge(string &s,int start,int end) { if(start==end) return true; while(end>start)
2016-07-29 11:09:22 301
原创 132. Palindrome Partitioning II
class Solution { private: vector<vector<string>> result; vector<string> curlist; bool judge(string &s,int start,int end) { if(end==start) return true; while(end>start)
2016-07-28 20:37:27 282
原创 87. Scramble String
class Solution { public: bool isScramble(string s1, string s2) { if(s1==s2) return true; if(s1.size()!=s2.size())return false; map<char,int> count; for(i
2016-07-27 10:44:18 547
原创 63. Unique Paths II
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m=obstacleGrid.size(); int n=obstacleGrid[0].size(); if(m==0) retu
2016-07-26 11:04:33 296
原创 62. Unique Paths
/* dp[i][j] 表示以[i][j]点为结束的路径的个数 dp[i][j]=dp[i-1][j]+dp[i][j-1]; 边界情况 最左边一列和最上面一行 dp[i][j]=1 */ class Solution { public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m,vector<int>(
2016-07-26 10:23:24 235
原创 140. Word Break II
class Solution { private: map<string,vector<string>> m;//m存储从s 到分割结果result的映射 vector<string> combine(string word,vector<string> pre) { for(int i=0;i<pre.size();i++) {
2016-07-25 17:37:26 428
原创 139. Word Break
/* dp[i]==ture代表在wordDict中找到了s[0~i-1]; dp[i]==ture则要求 dp[j]==true 且 word[j~i-1]在wordDict中(j>=0 j<=i-1) */ class Solution { public: bool wordBreak(string s, unordered_set<string>& wordDict) {
2016-07-25 15:08:10 255
原创 72. Edit Distance
/* dp[i][j] 代表将word1[0~i-1]转化成word2[0~j-1]所需的最小步数 考虑边界的情况 dp[i][0]=i dp[0][j]=j; 除了边界情况以外 i>=1,i<=word1.size() j>=1 j<word2.size() if word1[i-1]=word2[j-1] 则dp[i][j]=dp[i-1][j-1] else 使用replace方法dp
2016-07-25 10:44:34 355
原创 90. Subsets II
class Solution { public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { sort(nums.begin(),nums.end()); set<vector<int>> subs;//subs初始化只有一个空的vector<int>
2016-07-24 16:32:53 367
原创 78. Subsets
class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> subs(1,vector<int>());//subs初始化只有一个空的vector<int> for(int i=0;i<nums.size();i++)
2016-07-24 11:32:59 337
原创 120. Triangle
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { if(triangle.size()==1) return triangle[0][0]; int maxsize=triangle[triangle.size()-1].size();
2016-07-24 10:10:12 299
原创 6. ZigZag Conversion
class Solution { public: string convert(string s, int numRows) { if(numRows==1) return s; vector<string> buf(numRows,""); int n=s.size(); int i=0;
2016-07-23 16:07:04 277
原创 125. Valid Palindrome
class Solution { public: bool isPalindrome(string s) { int start=0; int end=s.size()-1; while(end>start) { while(end>start&&(!isalnum(s[start]))) start++; while(
2016-07-23 14:51:10 232
原创 58. Length of Last Wor
class Solution { public: int lengthOfLastWord(string s) { if(s.size()==0)return 0; stringstream ss(s); int lastlen=0; string temp; while(getline(ss,temp,' '))
2016-07-23 10:57:46 279
原创 5. Longest Palindromic Substring
class Solution { public: string longestPalindrome(string s) { if(s.size()==0) return ""; if(s.size()==1) return s; int maxlen=1;//字符串最大长度 int
2016-07-23 10:10:17 236
原创 44. Wildcard Matching
class Solution { public: bool isMatch(string s, string p) { int ppos=0; int spos=0; int star=-1;//找到的'*'的下标 int match; while(spos<s.size()) {
2016-07-22 14:14:41 316
原创 10. Regular Expression Matching
class Solution { public: bool isMatch(string s, string p) { if(p.empty()) return s.empty(); else if(p[1]=='*') return isMatch(s,p.substr(2))||!s.empty()&&((s[0]==p[0]||p
2016-07-22 09:48:14 243
原创 43. Multiply Strings
class Solution { public: string multiply(string num1, string num2) { int i,j; string product(num1.size()+num2.size(),'0');//初始化乘积 for(i=num1.size()-1;i>=0;i--) {
2016-07-21 21:34:58 231
原创 71. Simplify Path
class Solution { public: string simplifyPath(string path) { stringstream ss(path); string temp; string ret; vector<string> stk; while(getline(ss,temp,'/'))
2016-07-21 20:19:26 223
原创 68. Text Justification
class Solution { public: vector<string> fullJustify(vector<string>& words, int maxWidth) { int i;//i表示扫描到的word下标 int k;//k表示此行能够放下的word的数目 int l;//l表示此行放下的word的字符数目
2016-07-21 14:21:54 368
原创 49. Group Anagrams
class Solution { public: vector<vector<string>> groupAnagrams(vector<string>& strs) { map<string,multiset<string>> mp; for(string c:strs) { string s=c;
2016-07-20 10:39:18 326
原创 38. Count and Say
class Solution { public: string countAndSay(int n) { string res="1"; while(--n) { string cur=""; for(int i=0;i<res.size();i++) {
2016-07-19 20:40:49 212
原创 3. Longest Substring Without Repeating Characters
class Solution { public: int lengthOfLongestSubstring(string s) { unordered_map<char,int> map; int start=0;//start为不重复substring 的开始下标 int end=0;//end为不重复substring 的结束下标
2016-07-19 19:35:32 316
原创 85. Maximal Rectangle
/* 程序逐行处理.先处理0行,最后处理m-1行 在处理第j行的时候 面积等于(right[i]-left[i])*height[i] left[i]=max(left[i],cur_left) right[i]=min(right[i],cur_right) if(matrix[j][i]=="1") height[i]+=1; else height[i]=0; */ clas
2016-07-19 16:28:04 391
原创 76. Minimum Window Substring
class Solution { public: string minWindow(string s, string t) { int start=0;//start为在s中搜索的开始下标 int end=0;//end为在s中搜索的结束下标 int count=t.size();//count表示t中要在s中搜索的字符的个数
2016-07-19 10:54:51 423
原创 53. Maximum Subarray
/* dp[i]代表nums数组中 从0~i的最大subarray的和,且必须包含i元素 dp[i]=dp[i-1]>0?dp[i-1]:0+nums[i-1] */ class Solution { public: int maxSubArray(vector<int>& nums) { vector<int> dp(nums.size()+1); dp[0
2016-07-18 22:38:44 285
原创 123. Best Time to Buy and Sell Stock III
/* f[k][j]表示到j天为止进行了k次交易,产生的最大利润 f[k][j]=max{f[k][j-1],price[j]-price[i]+f[k-1][i]} 0=<i<=j-1 =max{f[k][j-1],price[j]+max{f[k-1][i]-price[i]}} */ class Solution { public: i
2016-07-18 10:48:23 347
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人