(回溯法)LeetCode#46. Permutations

xiaoxiao2021-02-28  75

题目:给定一个不包括重复元素的数组,返回所有排列难度:Medium思路:回溯法,结束条件是list的大小等于数组大小,然后将该排列结果添加到result列表里。在进行回溯的过程,需要利用两个for循环来添加元素(已经在List里的元素不能再次被添加)代码: public class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<>(); if(nums == null){ return result; } backtrack(result, new ArrayList<>(), nums); return result; } private void backtrack(List<List<Integer>> result,List<Integer> list, int[] nums){ if(list.size() == nums.length){ result.add(new ArrayList<>(list)); return; }else{ boolean isExist = false; for(int i = 0; i < nums.length; i++){ for(int j = 0; j < list.size(); j++){ if(nums[i] == list.get(j)){ isExist = true; } } if(isExist){ isExist = false; continue; }else{ list.add(nums[i]); backtrack(result, list, nums); list.remove(list.size()-1); } } } } }
转载请注明原文地址: https://www.6miu.com/read-76991.html

最新回复(0)