Leetcode每日一题2021/02/08

今天做的是回溯的题目。
首先,引用LeetCode题解中的解释。
Leetcode每日一题2021/02/08_第1张图片
Leetcode每日一题2021/02/08_第2张图片

我的个人理解是,回溯算法就是穷举。它的核心是选择撤销的操作,如图。
Leetcode每日一题2021/02/08_第3张图片
Leetcode每日一题2021/02/08_第4张图片
Leetcode每日一题2021/02/08_第5张图片

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        n = len(nums)
        res = []
        self.back(n , 0, nums, res)
        return res
    def back(self, n, first, nums, res):	# first的作用是固定元素
        if(first == n):
            res.append(nums[:])				# 添加不同顺序的数组
        for i in range(first, n):
            nums[first], nums[i] = nums[i], nums[first]
            self.back(n, first+1, nums, res)
            nums[first], nums[i] = nums[i], nums[first]

Leetcode每日一题2021/02/08_第6张图片

  • 还需要好好练习和理解。
  • 参考:LeetCode官方题解和liweiwei1419的题解。

你可能感兴趣的:(Leetcode,leetcode,算法)