您的位置:首页 > 娱乐 > 八卦 > [Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

2024/10/7 0:20:29 来源:https://blog.csdn.net/2201_75413354/article/details/141781062  浏览:    关键词:[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

原题地址

二、整体思路

        和上一道Leetcode46相比,有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同则直接访问下一个元素。在全排列问题中要稍微改一下。

        以{1,1,2}为例

三、代码

class Solution {List<List<Integer>> res=new ArrayList<>();List<Integer> temp=new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {boolean[] visited=new boolean[nums.length];Arrays.sort(nums);backtrace(visited,nums);return res;}void backtrace(boolean[] visited,int[] nums){if(temp.size()==nums.length){res.add(new ArrayList<>(temp));}for(int i=0;i<nums.length;i++){if(i>0 && visited[i-1]!=true && nums[i]==nums[i-1]){continue;}if(visited[i]){continue;}temp.add(nums[i]);visited[i]=true;backtrace(visited,nums);visited[i]=false;temp.remove(temp.size()-1);}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com