-
今日学习的文章链接,或者视频链接
-
自己看到题目的第一想法
-
看完代码随想录之后的想法
39:
class Solution {
public:
vector<vector<int>> result;
vector<int> path;
void backtracking(vector<int>& candidates, int target, int currentSum, int startIndex){
if (currentSum == target){
result.push_back(path);
}
for (int i = startIndex;i<candidates.size();i++){
if (currentSum+candidates[i]>target) return;
path.push_back(candidates[i]);
backtracking(candidates,target,currentSum+candidates[i],i);
path.pop_back();
}
}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
sort(candidates.begin(), candidates.end());
backtracking(candidates, target, 0, 0);
return result;
}
};
40
class Solution {
public:
vector<vector<int>> result;
vector<int> path;
void backtrack(vector<int>& candidates, int target, int currentSum, int startIndex){
if(currentSum == target){
result.push_back(path);
}
for(int i = startIndex;i<candidates.size();i++){
if(i>startIndex && candidates[i]==candidates[i-1]) continue;
if(currentSum+candidates[i]>target) return;
path.push_back(candidates[i]);
backtrack(candidates,target,currentSum+candidates[i],i+1);
path.pop_back();
}
}
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
sort(candidates.begin(),candidates.end());
backtrack(candidates,target,0,0);
return result;
}
};
131
class Solution {
public:
vector<vector<string>> result;
vector<string> path;
bool isPalindrome(const string &s, int start, int end){
while (start<=end){
if(s[start]!=s[end]){
return false;
}
start++;
end--;
}
return true;
}
void backtracking(string& s,int startIndex){
if(startIndex==s.size()){
result.push_back(path);
return;
}
for(int i = startIndex;i<s.size();i++){
if(isPalindrome(s,startIndex,i)){
path.push_back(s.substr(startIndex,i-startIndex+1));
}else{
continue;
}
backtracking(s,i+1);
path.pop_back();
}
}
vector<vector<string>> partition(string s) {
backtracking(s,0);
return result;
}
};
-
自己实现过程中遇到哪些困难
-
今日收获,记录一下自己的学习时长