제목: 전체 배열

1351 단어

숫자 목록을 정해서 가능한 모든 배열을 되돌려줍니다.당신은 실제 면접에서 이 문제를 만난 적이 있습니까?Yes의 예는 목록[1,2,3]을 제시하는데 그 전체 배열은 다음과 같다. [[1,2,3],[1,3,2],[2,1,3],[2,3,1,3,2],[3,2,1]] 도전은 귀속을 사용하지 않고 실현할 수 있습니까?태그 Expand 관련 제목 Expand
 
문제 해결 방법:
ABC는 먼저 A를 BC와 각각 교환한 후 귀속, 거슬러 올라가면 된다고 볼 수 있다
            ABC------->ACB   
ABC    BAC ------>BCA   
           CBA-------->CAB
class Solution {
    /**
     * @param nums: A list of integers.
     * @return: A list of permutations.
     */
    public ArrayList> permute(ArrayList nums) {
        // write your code here
         ArrayList> res = new ArrayList>();
         if(null==nums||0==nums.size()) return res;
         dictory(res, nums, 0);
         return res;
    }
    public void dictory(ArrayList> res,ArrayList nums,int start){
         if(start==nums.size()){
              res.add((ArrayList) nums.clone());
         }else{
              for(int i=start;i nums ,int s,int e){
         int tmp1 = nums.get(s);
         int tmp2 = nums.get(e);        
         nums.set(s, tmp2);
         nums.set(e, tmp1);
    }
}

좋은 웹페이지 즐겨찾기