本文主要是介绍Leetcode 040 Combination Sum II (隐式图搜索),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目连接:Leetcode 040 Combination Sum II
解题思路:与 Leetcode 039 思路相似,不过需要对数组进行预处理。预处理过程为,排序并去重,去重需要记录每个数的个数。而在搜索过程中,枚举每个数后,还有枚举它的个数,与Leetcode 039不同的是,Leetcode 039中只要剩余的和够,可能枚举若干个,而本题中,个数的最大值取决于原先数组中它的个数。
class Solution {public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {vector<int> tmp;vector<vector<int>> ans;int* count = new int[candidates.size()];int n = count[0] = 0;sort(candidates.begin(), candidates.end());for (int i = 0; i < candidates.size(); i++) {if (candidates[i] == candidates[n]) count[n]++;else { count[++n] = 1;candidates[n] = candidates[i];}}queue< pair<int, int&
这篇关于Leetcode 040 Combination Sum II (隐式图搜索)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!