题目描述:
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
算法实现:
JavaScript
/*** @param {number[]} nums* @return {number[][]}*/var permute = function(nums) {var len = nums.lengthreturn perm(len - 1)function perm(i) {if (i === 0) {return [[nums[0]]]}var ans1 = perm(i - 1)var size = ans1.lengthvar ans2 = []var fixNum = nums[i]for (var k = 0; k < size; k++ ) {for (var l = 0; l <= i; l++ ) {var arr = ans1[k].slice()arr.splice(l, 0, fixNum)ans2.push(arr)}}return ans2}};
思考:
考察递归的运用,这方面在前端领域应用不多,先前的想法是通过循环的嵌套来实现,没有成功解出,之后了解了一下回溯法,通过借鉴别人的代码完成了这道题。
总结:
虽然通过率很高,难度中等,但是我感觉这道题是我到目前为止做过最难的一道题,感觉仅仅依靠自己思考,根本想不出来这种方法,还是需要继续努力。
