题解 | #牛群排队#

牛群排队

https://www.nowcoder.com/practice/8d8ae3937cd5466eb330ca484ca5ed80

  • 题目考察的知识点 : 递归回溯
  • 题目解答方法的文字分析:
  1. 回溯过程中,对于每个还未被选中的数,将其加入当前排列中,并继续向下搜索;当排列长度达到数组长度时,就将该排列加入结果集中。
  2. 使用一个布尔类型的列表来记录每个数字是否已经被选过,在每次选择数字时,如果该数字已经被选过,则跳过该循环;否则,将其标记为已选中,并将其加入当前排列中,然后递归调用 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题的解法思路

全部评论

相关推荐

自由水:这HR已经很好了,多的是已读不回和不读了
点赞 评论 收藏
分享
04-21 11:22
已编辑
中华女子学院 UE4
耐心学习_佩可officical:直接举报他,佬,违反劳动法我记得boss会下架
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务