leetcode 46. permutations
呢條用 bracktrack + recursion,用hashMap去紀錄底行過既路徑,如果reach goal,就push入res; Goal: 當path.length=== nums.length; choice: 每一個nums loop一次 contraint: 由於我地要搵既係permutation,我地用hashmap紀錄行過既,如果行過就continue skip左佢,如果未,就push入path,然後由於我地push左入path,我地要將個i set做true 放入hashmap,然後再run多次bracktrack funtion,一路run ,直到reach goal ( path.length === nums.length),我地就push入res。 呢條bracktrack往下推既時候幾易諗,但當佢reach goal之後 return 個陣就難諗d,當佢reach goal之後,以nums = [1,2,3] 為例,當run到nums[index2] ( 3) 既時候path.length 已經 === nums.length,所以我地會return,但當我地return既時候,我地仍然係index2 (3) ,呢個時候我地就要pop左path同埋 set番 hashmap[index2] 為false 詳細過程: https://www.youtube.com/watch?v=J00GM8IjrmU&ab_channel=%E7%88%B1%E5%AD%A6%E4%B9%A0%E7%9A%84%E9%A5%B2%E5%85%BB%E5%91%98 var permute = function ( nums ) { let res = []; let path = []; var dfs = function ( n , k , used ) { if ( path . length === k ) { res . push ( Array . from ( ...