1.从双倍数组中还原原数组(力扣,vector)
java式c++解法。
class Solution {
public:vector<int> findOriginalArray(vector<int>& changed) {int n = changed.size();if(n % 2 == 1) return {};map<int, int> mp;for(int c : changed) mp[c]++;sort(changed.begin(), changed.end());vector<int> ans;int i = 0;while(i < n){int x = changed[i];if(mp[x] > 0){mp[x]--;if(mp[x * 2] <= 0) return {};mp[x * 2]--;ans.push_back(x);}i++;}return ans;}
};
2.组合总和|||(力扣,vector,二维数组,dfs)
vector,dfs。
class Solution {
public:vector<vector<int>> v;vector<int> tmp;void dfs(int u,int sum,int ct){if(sum<0) return ;if(sum==0&&ct==0){v.push_back(tmp);return ;}if(u>9||ct<=0) return;tmp.push_back(u);dfs(u+1,sum-u,ct-1);tmp.pop_back();dfs(u+1,sum,ct);}vector<vector<int>> combinationSum3(int k, int n) {dfs(1,n,k);return v;}
};