没有重复项数字的全排列

使用一个list,对数组进行排序。 在函数中首先就是终止条件判断,之后用一个for数组进行遍历,交换,递归调用,在回溯即可。

public void swap(ArrayList<Integer> list,int i,int index){

        int temp=list.get(i);
        list.set(i,list.get(index));
        list.set(index,temp);

    }

    public void recure(ArrayList<ArrayList<Integer>> lists,ArrayList<Integer> list,int index){

        if(index==list.size()-1) lists.add(list);

        for (int i=index;i<list.size();i++){
            swap(list,i,index);
            recure(lists,list,index+1);
            swap(list,i,index);
        }


    }




    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        Arrays.sort(num);
        ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> list=new ArrayList<Integer>();
        for (int i=0;i<num.length;i++){
            list.add(num[i]);
        }
        recure(lists,list,0);
        return lists;


    }




全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务