题解 | #牛群排队#
牛群排队
https://www.nowcoder.com/practice/8d8ae3937cd5466eb330ca484ca5ed80
- 题目考察的知识点 : 递归回溯
- 题目解答方法的文字分析:
- 回溯过程中,对于每个还未被选中的数,将其加入当前排列中,并继续向下搜索;当排列长度达到数组长度时,就将该排列加入结果集中。
- 使用一个布尔类型的列表来记录每个数字是否已经被选过,在每次选择数字时,如果该数字已经被选过,则跳过该循环;否则,将其标记为已选中,并将其加入当前排列中,然后递归调用 backtrack 函数,在回溯结束后,将其从当前排列中弹出,并重置其状态。
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型二维数组 # class Solution: def cow_permute(self, nums: List[int]) -> List[List[int]]: res = [] path = [] def backtrack(used_num: List[bool]) -> None: if len(path) == len(nums): res.append(path[:]) return for i in range(len(nums)): if not used_num[i]: used_num[i] = True path.append(nums[i]) backtrack(used_num) path.pop() used_num[i] = False backtrack([False] * len(nums)) return res[::-1]
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路