result = [] defdfs(values): iflen(values) == size: result.append(values)
for i inrange(size): if i in visited: continue visited.add(i) dfs(values + nums[i:i+1]) visited.remove(i)
dfs([])
return result
SWAP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution: defpermutations(self, data, start_index, end_index): if start_index == end_index: if data notin self.result: self.result.append(data[:]) return
for i inrange(start_index, end_index): data[i], data[start_index] = data[start_index], data[i] self.permutations(data, start_index + 1, end_index) data[i], data[start_index] = data[start_index], data[i]