[八我司] 介绍一下Uber tech stack和各个大组的情况

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 651|回复: 4
收起左侧

[Leetcode] Permutations里的小问题

[复制链接] |试试Instant~ |关注本帖
nathanma 发表于 2014-12-11 10:18:37 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
在做Permutations这题时,遇到了一个小问题,想不明白发出来问问。。
code:

public class Solution {
    ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
    ArrayList<Integer> item = new ArrayList<Integer>();

    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        if(num.length==0||num==null)
            return res;
        boolean[] visited = new boolean[num.length];  
        permutation_helper(num,visited);
        return res;
    }

    public void permutation_helper(int[] num,boolean[] visited){
        if(item.size()==num.length){
            res.add(new ArrayList<Integer>(item));
            return;
        }   
        for(int i = 0; i<num.length;i++){
            if(!visited){
                item.add(num);
                visited=true;
                permutation_helper(num,visited);
                item.remove(item.size()-1);
                visited=false;
            }
        }
    }
}

=========我是分割线===========
不懂得是红色这行为啥不能写res.add(item);这个和原来的有啥区别?这个就会跑不出结果,原来的就pass。
求指导,还是说刷了一天脑子短路了。。
yabay91 发表于 2014-12-11 10:33:03 | 显示全部楼层
因为item是一个引用呀。如果按照你这么写,现在加进去之后,没问题,但是返回之后,其它递归的所有更改都是基于你的这个item的呀~你可以试着在本地run一下,不出意外的话你最终的res里面只会有一个元素~
回复 支持 反对

使用道具 举报

全球28万学生4.7分推荐
MCwong 发表于 2014-12-11 11:11:29 | 显示全部楼层
new一个,分配新空间, 不然之后对item的操作会影响前面已经存好的
回复 支持 反对

使用道具 举报

yls0327 发表于 2014-12-12 05:02:05 | 显示全部楼层
因为之前的结果会被用到下一层递归中,所以就不对了
这种都需要“保护现场”,add,递归,之后再remove掉
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2014-12-12 10:43:29 | 显示全部楼层
因为在递归的时候,item是会变的,如果直接加在res里面,到最后,res里面存的都是一样的ArrayList<Integer>
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-25 11:36

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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