扁平式网站模板郑州专业制作网站费用
扁平式网站模板,郑州专业制作网站费用,做pc端网站机构,福田瑞沃大金刚LeetCode 39.组合总和
题目链接#xff1a;
LeetCode 39.组合总和
解题思路#xff1a;
用回溯的方法#xff0c;#xff0c;注意这次回溯不是i1#xff0c;而是i#xff0c;是因为可用重复选取。
代码#xff1a;
class Solution {
public:vectorvectori…LeetCode 39.组合总和
题目链接
LeetCode 39.组合总和
解题思路
用回溯的方法注意这次回溯不是i1而是i是因为可用重复选取。
代码
class Solution {
public:vectorvectorintresult;vectorintpath;int sum0;void traversal(vectorintcandidates,int target,int Index){if(sumtarget){result.push_back(path);return;}else if(sumtarget){return;}for(int iIndex;icandidates.size();i){path.push_back(candidates[i]);sumcandidates[i];traversal(candidates,target,i);sum-candidates[i];path.pop_back();}}vectorvectorint combinationSum(vectorint candidates, int target) {traversal(candidates,target,0);return result;}
};
LeetCode 40.组合总和2
题目链接
LeetCode 40.组合总和2 解题思路
用used数组看前面元素是否使用过之后将数组排序当和前面元素重复且前面元素没用过时元素进行下一个来去重。
代码
class Solution {
public:vectorvectorintresult;vectorintpath;void traversal(vectorint candidates, int target, int Index,int sum,vectorboolused){if(sumtarget){result.push_back(path);return;}for(int iIndex;icandidates.size()sumcandidates[i]target;i){if(i0candidates[i]candidates[i-1]used[i-1]false){continue;}path.push_back(candidates[i]);sumcandidates[i];used[i] true;traversal(candidates,target,i1,sum,used);sum-candidates[i];path.pop_back();used[i]false;}}vectorvectorint combinationSum2(vectorint candidates, int target) {sort(candidates.begin(),candidates.end());path.clear();result.clear();vectorboolused(candidates.size(),false);traversal(candidates,target,0,0,used);return result;}
};
LeetCode 131.分割回文串
题目链接
LeetCode 131.分割回文串 解题思路
将切割类比为组合问题将元素索引变化为切割位置逐个判断是不是回文的之后进行回溯。
代码
class Solution {
public:bool isPalindrome(const string s, int start, int end) {for (int i start, j end; i j; i, j--) {if (s[i] ! s[j]) {return false;}}return true;}vectorvectorstring result;vectorstring path;void backtracking(string s, int Index) {if (Index s.size()) {result.push_back(path);return;}for (int i Index; i s.size(); i) {if (isPalindrome(s, Index, i)) {path.push_back(s.substr(Index, i - Index 1));} else {continue;}backtracking(s, i 1);path.pop_back();}}vectorvectorstring partition(string s) {backtracking(s, 0);return result;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86393.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!