题解 | #牛群排列组合#

牛群排列组合

https://www.nowcoder.com/practice/3db87961faf34094b5115775be588126

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型二维数组
     */
    public int[][] cow_permutation (int[] nums) {
        // write code here
        int n=nums.length;
        List<List<Integer>> res=new ArrayList<>();
        List<Integer> temp=new ArrayList<>();
        boolean[] flag=new boolean[n];
        
        Arrays.sort(nums);
        Arrays.sort(nums);
        int[] reversedNums = new int[n];
        for (int i = 0; i < n; i++) {
            reversedNums[i] = nums[n - i - 1];
        }


        backtracing(reversedNums,res,temp,flag);
        int[][] ans=new int[res.size()][nums.length];
        for(int i=0;i<res.size();i++){
            for(int j=0;j<nums.length;j++){
                ans[i][j]=res.get(i).get(j);
            }
        }
        return ans;
    }
    public void backtracing(int[] nums,List<List<Integer>> res,List<Integer> temp,boolean[] flag){
        if(temp.size()==nums.length){
            res.add(new ArrayList<>(temp));
            return;
        }
        for(int i=0;i<nums.length;i++){
            if(i!=0&&nums[i]==nums[i-1]&&flag[i-1]==false) continue;

            if(flag[i]==false){
                temp.add(nums[i]);
                flag[i]=true;
                backtracing(nums,res,temp,flag);
                temp.remove(temp.size()-1);
                flag[i]=false;

            }
        }
    }
}

全部评论

相关推荐

07-18 18:45
已编辑
中山职业技术学院 Java
投递TP-LINK等公司10个岗位
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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