leetcode 47. 全排列 II java题解

全排列1
题解
本题:全排列2(要求去重)
我们选择对原数组排序,保证相同的数字都相邻,然后每次填入的数一定是这个数所在重复数集合中「从左往右第一个未被填过的数字」。 为什么“i>0&&!visited[i-1]&&nums[i-1]==nums[i]”中是“!visited[i-1]”?因为对于同一层而言,我们只选择相同数字的最左边一个未被填过的数字。如果visited[i-1]说明左边的数是上一层用过的,本层还可以用同样的数。如果!visited[i-1]说明本层可选左边的数,for循环的上一次已经用过,只是因为回溯时恢复了visited状态。
class Solution {
ArrayList> res=new ArrayList<>();
int[] nums;
boolean[] visited;
public List

leetcode 47. 全排列 II java题解最先出现在Python成神之路

版权声明:
作者:Alex
链接:https://www.techfm.club/p/10132.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>