力扣——算法入门计划第十一天

简介: 力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。 此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。

 目录

🍕题目

🍔回溯

🍟代码

🍕题目

🍔思路

🍟代码

🍕题目

🍔思路

🍟代码


🍕题目

77. 组合

image.png

🍔回溯

1)先确定边界条件,if len(path) == k:
               res.append(path[:])

2)  dfs(i + 1, path + [i])  递归下一个元素

🍟代码

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        def dfs(start, path):
            if len(path) == k:
                res.append(path)
                return
            upper_bound = n - (k - len(path)) + 1
            for i in range(start, upper_bound + 1):
                dfs(i + 1, path + [i])
        res = []
        dfs(1, [])
        return res

image.gif

image.png

🍕题目

46. 全排列

image.gifimage.png

🍔思路

image.png

path记录结果,cand.....没用过的元素   最上面 不断遍历的数字

利用切片将i元素去掉

🍟代码

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        if len(nums) <= 1: return [nums]
        self.res = []
        def recur(path,cand):
            if len(cand)  == 0:
                self.res.append(path)
            for i,n in enumerate(cand):
                recur(path+[n],cand[:i]+cand[i+1:])
        recur([],nums)
        return self.res

image.gif

image.gifimage.png

🍕题目

784. 字母大小写全排列

image.png

🍔思路

我们可以看到我们有三种选择
1.如果是大写则转换为小写
2.如果是小写则转换为大写
3.不进行转换

🍟代码

class Solution:
    def letterCasePermutation(self, s: str) -> List[str]:
        res = []
        def dfs(idx, n, s:str):
            if idx == n:
                res.append(s)
                return
            if s[idx].islower():
                dfs(idx + 1, n, s[:idx] + chr(ord(s[idx]) - 32) + s[idx + 1:])
            if s[idx].isupper():
                dfs(idx + 1, n, s[:idx] + chr(ord(s[idx]) + 32) + s[idx + 1:])
            dfs(idx + 1, n, s)
        dfs(0, len(s), s)
        return res

image.gif

image.png

相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
2月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
49 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
2月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
39 6
|
2月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
53 2
|
2月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
41 1
|
2月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
40 1
|
2月前
|
存储 算法
【C算法】编程初学者入门训练140道(1~20)
【C算法】编程初学者入门训练140道(1~20)
|
2月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
64 0
|
2月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
33 0
|
2月前
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
45 0
下一篇
无影云桌面