在leetcode上看到一個題,代碼實現排列組合的。
記得大學上課時候,就用c寫過,現在用js試試,順便看看耗時。
先看看3的階乘:
function permute(temArr,testArr){ var permuteArr=[]; var arr = testArr; function innerPermute(temArr){ for(var i=0,len=arr.length; i<len; i++) { if(temArr.length == len - 1) { if(temArr.indexOf(arr[i]) < 0) { permuteArr.push(temArr.concat(arr[i])); } continue; } if(temArr.indexOf(arr[i]) < 0) { innerPermute(temArr.concat(arr[i])); } } } innerPermute(temArr); return permuteArr; } console.time('permute'); var arr1 = [1,2,3];
//var arr1 = [1,2,3,4,5]; console.dir(permute([],arr1)); console.timeEnd('permute');
如果是5的階乘呢?