题解 | #有重复项数字的全排列#

有重复项数字的全排列

https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863

using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型一维数组 
     * @return int整型二维数组
     */
    public List<List<int>> permuteUnique (List<int> num) {
        num.Sort();
        return permuteUnique2(num);
    }
    public List<List<int>> permuteUnique2(List<int> num){
        List<List<int>> res = new List<List<int>>();
        if(num.Count == 1){
            res.Add(new List<int>{num[0]});
        }
        else{
            for(int i = 0; i < num.Count; i++){
                if(i != 0 && num[i] == num[i - 1]) continue;
                int g = num[i];
                num.RemoveAt(i);
                List<List<int>> preres = permuteUnique2(num);
                foreach(List<int> part in preres){
                    part.Insert(0, g);
                    res.Add(part);
                }
                num.Insert(i, g);
            }
        }
        return res;

    }
}

全部评论

相关推荐

沟头学院:无关比赛不要写,这样会显着你主次不分,比赛不要撒谎,有哪些就写那些,创新创业建议删除。技能特长可以适当夸大。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务