给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回

简介:

class Solution {

public List<List<Integer>> permute(int[] nums) {
    List<List<Integer>>  result = new ArrayList<>();
    if(nums.length == 0){
        return result;
    }

    ValueRecord[] valueRecords = new ValueRecord[nums.length];
    for(int i = 0; i<nums.length;i++){
        ValueRecord valueRecord = new ValueRecord();
        valueRecord.value = nums[i];
        valueRecords[i] = valueRecord;
    }
    List<Integer> path = new ArrayList<>();
    dfs(nums, path, valueRecords, result);
    return result;
}

/**
 *
 **/
private void dfs(int[] nums, List<Integer> path, ValueRecord[] valueRecords, List<List<Integer>>  result ){
    if(path.size() == nums.length){
        result.add(new ArrayList(path));
        return;
    }

    for(int currIndex = 0; currIndex<nums.length;currIndex++){
        ValueRecord valueRecord = valueRecords[currIndex];
        if(!valueRecord.isValid){
            continue;
        }
        valueRecord.isValid = false;
        path.add(valueRecord.value);
        dfs(nums, path, valueRecords, result);
        path.remove(path.size()-1);
        valueRecord.isValid = true;
    }
}

public static class ValueRecord{
    int value;
    boolean isValid = true;
}

}

目录
相关文章
|
7月前
|
JavaScript 前端开发 索引
如何判断一个值是否在数组内?
如何判断一个值是否在数组内?
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
算法
arr = [1,2,5,8,9,10,20,30,40] 有一个从小到大排序好的数组,现在输入一个数,要求按照原来的规律插入到数组中
arr = [1,2,5,8,9,10,20,30,40] 有一个从小到大排序好的数组,现在输入一个数,要求按照原来的规律插入到数组中
117 0
|
7月前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
239 0
​判断给定字符序列是否是回文
​判断给定字符序列是否是回文
84 0
|
存储 算法 JavaScript
寻找数组中的重复数字
寻找数组中的重复数字
寻找数组中的重复数字
数组与矩阵——3.数组中重复的数字
数组与矩阵——3.数组中重复的数字
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
140 0