题解 | #集合的所有子集(一)#
集合的所有子集(一)
https://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9
/** * * @param A int整型一维数组 * @return int整型二维数组 */ function subsets( A ) { if(A.length === 0) return A; A.sort((a, b) => a - b); let res = [], track = []; const backtrack = function (A, track, index) { res.push([...track]); for(let i = index; i < A.length; i++) { track.push(A[i]); backtrack(A, track, i + 1); track.pop(); } } backtrack(A, track, 0); return res; } module.exports = { subsets : subsets };
题目只是要求子集内的元素是按顺序,不是说返回的结果子集顺序是多叉树的层序顺序。
只是要注意 [] 返回的是 [] 不是 [[]]。
这道题,由index限制了遍历的顺序,所以终止条件自然而然的缺省,元素的顺序也得到了确定。