[21/10/01 KATA NINJA] permutations
復習のために、感じを探して、解いてみました.
arrayの内蔵関数を用いると,より速く解くことができる.
why...? 検索に時間がかかるからでしょうか…?
知り合いがいたらコメントで教えてください...
説明する
var permute = function(nums) {
return DFS([]);
function DFS(visited){
if(visited.length === nums.length) return [visited.map(i=>nums[i])];
const result = []
for(let check = 0;check<nums.length;check++){
// 방문이 완료된 인덱스는 유망하지 않으므로 가지치기.
if(!visited.includes(check)){
// 방문이 안된 인덱스만 방문한다.
result.push(...DFS([...visited,check]));
}
}
return result;
}
};
もう一つの解釈
arrayの内蔵関数を用いると,より速く解くことができる.
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
const finish = nums.length;
return DFS([],[...nums]);
function DFS(stack,nums){
if(stack.length === finish){
return [stack]
}
const result = [];
for(let i=0;i<nums.length;i++){
const data = [...nums];
// 넣을 데이터는 배열에서 제외시켜버린다.
data.splice(i,1);
// 다음 배열은 넣은 데이터가 삭제된 배열에서 하나를 뽑는 것임.
result.push(...DFS([...stack,nums[i]],data));
}
return result;
}
};
?
다음 코드를
return DFS([],[...nums]);
아래 코드로 변경하면
return DFS([],nums);
속도가 더 느리다.
why...? 検索に時間がかかるからでしょうか…?
知り合いがいたらコメントで教えてください...
Reference
この問題について([21/10/01 KATA NINJA] permutations), 我々は、より多くの情報をここで見つけました https://velog.io/@rat8397/211001-KATA-NINJA-permutationsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol