2026/1/9 4:36:35
网站建设
项目流程
饰品企业网站建设,wordpress使用个人写的页面,做网站需要几步,网站开发哪种语言好46.全排列给定一个不含重复数字的数组 nums #xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1#xff1a;输入#xff1a;nums [1,2,3]
输出#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2#xff1a;输入#xff1a;nu…46.全排列给定一个不含重复数字的数组nums返回其所有可能的全排列。你可以按任意顺序返回答案。示例 1输入nums [1,2,3]输出[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2输入nums [0,1]输出[[0,1],[1,0]]示例 3输入nums [1]输出[[1]]提示1 nums.length 6-10 nums[i] 10nums中的所有整数互不相同该题是回溯问题 用递归较方便每次只需要判断数组中的数是否被用过即可即创建一个布尔数组来判别每个数组的位置是否被用过接着按序递归遍历数组即可只要保证保存的临时集合最大的个数要小于等于给定的数组个数若等于数组个数则需要将其保存在结果集合中。具体代码如下public static void main(String[] args) { // 测试用 int[] nums {1,2,3}; ListListInteger res permute(nums); for (ListInteger list : res) { System.out.println(list); } } public static ListListInteger permute(int[] nums) { ListListInteger res new ArrayList(); helper(res, new ArrayList(), nums, 0, new boolean[nums.length]); return res; } public static void helper(ListListInteger res, ListInteger temp, int[] nums, int count, boolean[] s){ if (count nums.length){ res.add(new ArrayList(temp)); return; } if (count nums.length){ return; } for (int i 0; i nums.length; i) { if (s[i] true){ continue; } temp.add(nums[i]); s[i] true; helper(res, temp, nums, count 1, s); temp.remove(temp.size() - 1);; s[i] false; } }以上为记录分享用代码较差请见谅