46. Permutations

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
题目含义:求给定向量数组所有元素的全排列问题。
class Solution {
private List<List<Integer>> result = new ArrayList<>();

    public List<List<Integer>> permute(int[] nums) {
        recurFullArray(nums, 0);
        return result;
    }

    private void recurFullArray(int[] nums, int startPosition) {
        if (startPosition == nums.length) {
            List<Integer> temp = new ArrayList<>();
            for (int i = 0; i < nums.length; i++) temp.add(nums[i]);
            result.add(temp);
            return;
        }

        for (int i = startPosition; i < nums.length; i++) {
            swapValue(nums, startPosition, i);
            recurFullArray(nums, startPosition + 1);
            swapValue(nums, startPosition, i);
        }
    }

    private void swapValue(int[] array, int left, int right) {
        int temp = array[left];
        array[left] = array[right];
        array[right] = temp;
    }
}

 

类似题目:字符串的全排列

https://blog.csdn.net/qq_41056506/article/details/82659524

posted @ 2017-10-24 20:08  daniel456  阅读(111)  评论(0编辑  收藏  举报