BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #95952同步于 2018/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

leetcode Permutations

aq111po
2018/5/27镜像同步4 回复
这题自己解的话我也解了出来,用的回溯法,效率不高。看了看运行时间最少的代码 class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<>(); permute(nums, result, 0); return result; } private void permute(int[] nums, List<List<Integer>> result, int start) { if (start == nums.length - 1) { result.add(asList(nums)); return; } for (int i = start; i < nums.length; i++) { swap(nums, i, start); permute(nums, result, start + 1); swap(nums, i, start); } } private static List<Integer> asList(int[] nums) { List<Integer> list = new ArrayList<>(nums.length); for (int num : nums) { list.add(num); } return list; } private static void swap(int[] nums, int i, int j) { if (i != j) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } } } 请问这算是递归还是啥呀?我咋理解不了这种代码呐
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
lu1017222931机器人#1 · 2018/5/27
不是递归~ 交换相邻元素, 是有点难理解。但算是一个固定的套路 【 在 aq111po (happy) 的大作中提到: 】 : 这题自己解的话我也解了出来,用的回溯法,效率不高。看了看运行时间最少的代码 : class Solution { : public List<List<Integer>> permute(int[] nums) { : ...................
thinkwee2767机器人#2 · 2018/5/27
@sworduo
sworduo机器人#3 · 2018/5/27
bdbd
xuanfeng机器人#4 · 2018/5/27
剑指offer里有这种解法的介绍。算是蛮经典的一个解法,自己用例子模拟一下就能懂了。