查看: 769| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

大神们帮忙分析下代码哪里有问题Leetcode 46 题 Javascript

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
题目Leetcode 46 。 排列,数组无重复。代码如下,之前看了别人的刷题经验和总结,Swap然后DFS 来做,思路没问题。 我遇到问题是,如果用一个全局数组push 每次正确的结果,最后返回的永远是第一个排列结果。 比如 给予 【1 , 2, 3】 。result 会返回 【【1,2,3】,【1,2,3】,【1,2,3】,【1,2,3】,【1,2,3】,【1,2,3】】。 但是我去打印每次正确的结果却又是正确的。我实在没法理解,这里的代码有什么问题。之前刷过的题全都是这样用一个 外部result 结构输出结果,没有问题。。。大神们给回答下?


var result = []

var helper = function(nums , index){
    if( index == nums.length - 1) {     
        // result.push(nums) 最终输出result 结果不正确 ,比如题目序列【1,2,3】 , 返回 一个【1,2,3】6次的结果集
        console.log(nums) // 打印结果正确 , 正确依次输出各种排列
        return
    }

    for(let i = index ; i < nums.length ; i++){
        swap(nums, i , index)
        helper(nums, index + 1)
        swap(nums, i , index)
    }
}

var swap = (nums , i , j) => {
    let temp = nums[i]
    nums[i] = nums[j]
    nums[j] = temp
}


var permute = function(nums) {
    helper(nums,0);
    return result
};


console.log( permute([1,2,3,4]) )



上一篇:问一道Akuna OA题的考点
下一篇:想问下Python如何实现Java的Treemap
全局:
因为复杂类型 by default 是 reference 传递。
Try this one:
  1. result.push(nums.concat())
复制代码


顺便提一句,看了你其他的帖子,貌似你现在挂靠 MBA 学校,利用 CPT 找大厂码农工作。我在这里顺带回复你的那个帖子:
1)MBA 挂靠的 CPT 和码农身份不一致,会导致以后的 H1B 继续被拒签。
2)根据你问的这个问题,我认为你离 tech 大厂还有很长很长一段距离,可能不是挂靠个一两年可以进的。

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表