全排列树层/树枝去重
去重:1.对数组进行排序,保证相同数据能放在一起
Arrays.sort(nums);
2.进行去重:当这个元素与前一个元素相等,且i>0,并且前一个元素没被使用的时候进行去重。
树层去重为什么前一个元素没被使用就可以去重:
在回溯操作中,树层上的变化一直都是前一个元素的使用变成这个元素的使用。而树枝上的变化则是前一个元素使用的同时,这个元素也使用了.
if(i>0&&nums[i]==nums[i-1]&&!isVisited[i-1]) continue;
上面代码为树层去重//这个效率更高,他会剪掉更多的分枝
if(i>0&&nums[i]==nums[i-1]&&isVisited[i-1]) continue;
上述代码为树枝去重

浙公网安备 33010602011771号