news 2026/4/16 14:07:38

day22-数据结构力扣

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day22-数据结构力扣

发现又涨了一个粉丝,心情愉悦

491.递增子序列

题目链接491. 非递减子序列 - 力扣(LeetCode)

思路

首先也是要求全部子集

然后我们根据题目条件筛选

要不递减,长度大于等于2,不重复

提交

效率低,但是思路简单粗暴

class Solution: def findSubsequences(self, nums: List[int]) -> List[List[int]]: res = [] def backtrack(start: int, path: List[int]): path_sort=sorted(path) if len(path)>=2 and path==path_sort and path not in res: res.append(path.copy()) # 从start开始遍历,避免重复子集 for i in range(start, len(nums)): path.append(nums[i]) # 选择当前元素 backtrack(i + 1, path) # 递归(不能重复选自己) path.pop() # 回溯,撤销选择 backtrack(0, []) return res

46.全排列

题目链接46. 全排列 - 力扣(LeetCode)

思路

感觉是一个典中典的题,但是我没背过它的代码,自己想还是想不出来。

这是回溯法最经典的题型,和子集、IP 复原思路同源,但核心区别:全排列要用完所有元素,且顺序不同算不同结果

核心思路

  1. 每次从所有未用过的数字里选一个加入路径

  2. used 数组标记数字是否被使用(避免重复选)

  3. 当路径长度 = 数组长度时,就是一个完整排列

  4. 回溯:撤销选择,继续尝试其他可能

妙啊,用一个数组把使用未使用做标记

提交

from typing import List class Solution: def permute(self, nums: List[int]) -> List[List[int]]: res = [] n = len(nums) # 标记数字是否被使用 used = [False] * n def backtrack(path): # 终止条件:路径长度等于数组长度,找到一个全排列 if len(path) == n: res.append(path.copy()) return # 每次都遍历所有数字(和子集不同,子集是从start开始) for i in range(n): if not used[i]: # 没被使用才选 used[i] = True # 标记为已使用 path.append(nums[i]) backtrack(path) # 递归 path.pop() # 回溯:撤销选择 used[i] = False # 取消标记 backtrack([]) return res

47.全排列 II

题目链接47. 全排列 II - 力扣(LeetCode)

思路

就是在上道题的基础上去重

那在收集结果的时候加一下判断条件就好了

只改了这一句

if len(path)==n and path not in res:

提交

class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]: res=[] n=len(nums) used=[False]*n def backtrack(path): if len(path)==n and path not in res: res.append(path[:]) return for i in range(n): if not used[i]: path.append(nums[i]) used[i]=True backtrack(path) path.pop() used[i]=False backtrack([]) return res
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 7:53:11

Asian Beauty Z-Image Turbo 社区作品年鉴:年度最佳生成图像鉴赏

Asian Beauty Z-Image Turbo 社区作品年鉴:年度最佳生成图像鉴赏 又一年过去了,是时候回头看看,我们这群热爱用AI画画的人,都折腾出了些什么好东西。 今天这篇文章,我想带你一起翻翻“相册”,看看过去一年…

作者头像 李华
网站建设 2026/4/13 16:04:19

stock-sdk-mcp 的实践整理栈

一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…

作者头像 李华
网站建设 2026/4/13 2:14:27

MySQL语句执行深度剖析:从连接到执行的全过程孪

开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…

作者头像 李华