Skip to content

Instantly share code, notes, and snippets.

@svaza
Created May 8, 2022 02:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save svaza/768077cbd5dcf1540b4e9327e170b986 to your computer and use it in GitHub Desktop.
Save svaza/768077cbd5dcf1540b4e9327e170b986 to your computer and use it in GitHub Desktop.
Combination sum
function combinationSum(candidates: number[], target: number): number[][] {
let allStack: number[][] = [];
traverse(candidates, target, [], allStack, 0);
return allStack;
};
function traverse(candidates: number[], target: number, currentStack: number[], allStack: number[][], startIter: number) {
if (target === 0) {
allStack.push([...currentStack]);
return true;
}
if (target < 0) {
return false;
}
for (let i = startIter; i < candidates.length; i++) {
target -= candidates[i];
currentStack.push(candidates[i]);
traverse(candidates, target, currentStack, allStack, i);
currentStack.pop();
target += candidates[i];
}
return false;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment