LeetCode-permutations-ii(중복 숫자의 배열 이 있 음)-자바
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,[1,1,2]have the following unique permutations:[1,1,2],[1,2,1], and[2,1,1].
사고방식 해석:
4.567917.이 문 제 는 전체 배열 을 바탕 으로 중복 되 는 지 아 닌 지 를 판단 해 야 한다.먼저 배열 을 작은 것 부터 큰 것 까지 배열 해 야 한다.이렇게 중복 되 는 것 은 모두 인접 해 있다4.567917.그리고 해 야 할 일 은 num[i-1]=num[i]의 경우 방문 한 적 이 없다 는 것 이다.이 럴 때 는 반복 되 는 결과 가 나 와 바로 뛰 어 넘 는 다
코드:
import java.util.*;
public class Solution {
public ArrayList> permuteUnique(int[] num) {
ArrayList> res = new ArrayList>();
ArrayList item = new ArrayList();
if(num==null || num.length==0){
return res;
}
boolean[] visited = new boolean[num.length];
Arrays.sort(num);
helper(res,item,visited,num);
return res;
}
private void helper(ArrayList> res,ArrayList item,boolean[] visited,int[] num){
if(item.size() == num.length){
res.add(new ArrayList(item));
return;
}
for(int i=0;i0 &&num[i-1] == num[i]&&!visited[i-1]){
continue;
}
if(!visited[i]){
item.add(num[i]);
visited[i]=true;
helper(res,item,visited,num);
item.remove(item.size()-1);
visited[i]=false;
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2 단 대기 열 문제 풀이이 문제 의 가장 직접적인 해법 은 모든 미끄럼 창 을 직접 옮 겨 다 니 며 각 창의 최대 치 를 찾 으 면 된다.모두 N - k + 1 개의 미끄럼 창 이 있 고 미끄럼 창 마다 k 개의 요소 가 있 기 때문에 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.