78. Subsets
5056 ワード
💡 に答える
var subsets = function (nums) {
let result = [[]];
function backtrack(first, stack) {
for (let i = first; i < nums.length; i++) {
stack.push(nums[i]);
result.push([...stack]);
backtrack(i + 1, stack);
stack.pop();
}
}
backtrack(0, []);
return result;
};
let nums = [1, 2, 3];
console.log(subsets(nums));
📝 結果
📝 整理する
以前と同様に、これもBackTrackingの基礎問題です.問題は、
nums
の繰り返し不可能な配列であり、すべてのsubset
がreturn
であることが要求される.(=サブアレイ)BackTrackingアルゴリズムの動作原理が分かれば分かりやすい.(私はまだ完全に理解していません)回答は次のとおりです.
正解を含む2次元配列
result=[[]]
を発表した.backtrack
という名前の再帰関数を宣言します.関数では、ループ文は、
first
、すなわちbackTrack
関数の最初のパラメータからnums
配列の長さまで続く.その後、
stack
の任意の配列にnums
配列の要素が含まれる.次いで、
stack
配列をコピーし、result
配列に入れる.関数は再び再帰的に呼び出され(他の場合、参照のために)、
stack
によってpop
配列の要素が削除される.(BactTrack
作業部)質問リンク
https://leetcode.com/problems/subsets/
LeetCode GitHub
https://github.com/tTab1204/LeetCode
Reference
この問題について(78. Subsets), 我々は、より多くの情報をここで見つけました https://velog.io/@ken1204/78.-Subsetsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol