题解 | #集合的所有子集(一)#

集合的所有子集(一)

http://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9

集合问题看作回溯中的多叉树深度优先遍历,关键部分是二维数组头部的index和走过的路径path for循环中的push和pop操作是对当前位的数字替换,bt回溯是增加位的操作

 * 
 * @param A int整型一维数组 
 * @return int整型二维数组
 */
 function subsets( A ) { 
  // write code here
  let res = []
  let path = [] //存放当前已选的数字
    function bt(idx) { //idx 记录当前指向的索引 
        res.push(path.slice()) 
         for(let i =idx;i<A.length;i++){ //索引以此向后移动表明以元素为首的数组集合
            path.push(A[i]) //当前(新)元素记录 
            bt(i+1) //当前已记录元素的基础上新增一位(深度)
            path.pop() //当前(新)元素已记录 出栈
         }
    }
    bt(0)  
  return  res
}

module.exports = {
  subsets : subsets
};
全部评论
感谢大佬
点赞 回复 分享
发布于 2022-06-02 17:16

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务