全排列树层/树枝去重

去重: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;

上述代码为树枝去重

posted @ 2024-03-14 17:19  天启A  阅读(78)  评论(0)    收藏  举报