Python 中的排列
pythonserver side programmingprogramming更新于 2025/10/25 17:16:17
假设我们有一个不同整数的集合;我们必须找到所有可能的排列。因此,如果数组为 [2,1,3],则结果将是 [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
为了解决这个问题,我们将遵循以下步骤 −
- 我们将使用递归方法,这将生成列表、start、curr 和 res
- 如果 start > 列表长度 – 1,则将 curr 添加到 res 中,然后返回
- 对于 i,范围为 start 到给定列表的长度 – 1
- 交换索引 start 处存在的列表元素和 (start + (i – start))
- permutation(list, start + 1, curr + [list[start]], res)
- 交换索引 start 处存在的列表元素和 (start + (i – start))
- 最初调用 permutation(arr, 0, [], res)
示例 (Python)
让我们看下面的实现,以便更好地理解 −
class Solution(object): def permute(self, nums): result = [] self.permute_util(nums,0,[],result) return result def permute_util(self,given_list,start,curr,result): if start > len(given_list)-1: #print(curr) result.append(curr) return for i in range(start,len(given_list)): self.swap(given_list,start,start+(i-start)) self.permute_util(given_list,start+1,curr+[given_list[start]],result) #print(given_list) self.swap(given_list, start, start + (i - start)) def swap(self,nums,index1,index2): temp = nums[index1] nums[index1] = nums[index2] nums[index2] = temp ob1 = Solution() print(ob1.permute([1,2,3,4]))
输入
[1,2,3,4]
输出
[[1,2,3,4],[1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,3,2],[1,4,2,3],[2,1,3,4],[2,1,4,3],[2,3,1,4],[2,3,4,1],[2,4,3,1],[2,4,1,3],[3,2,1,4],[3,2,4,1],[3,1,2,4],[3,1,4,2],[3,4,1,2],[3,4,2,1],[4,2,3,1],[4,2,1,3],[4,3,2,1],[4,3,1,2],[4,1,3,2],[4,1,2,3]]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

