当前位置: 首页 > news >正文

hot100 -- 10.回溯系列

1.全排列

问题:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

方法:回溯法(固定当前位置,处理后续元素)

# 全排列:回溯法(固定每个位置,并处理剩余元素,以遍历所有可能)
# 初始:[1,2,3]
#    1固定 → 处理[2,3] → 得到[1,2,3]和[1,3,2]
#    2固定 → 处理[1,3] → 得到[2,1,3]和[2,3,1]
#    3固定 → 处理[1,2] → 得到[3,1,2]和[3,2,1]def permute(nums):res = []def backtrack(first):# 筛完一轮if first == len(nums):res.append(nums.copy())                         # 拷贝,防止res跟着nums变return# 固定first及以前的,处理后续的所有可能for i in range(first, len(nums)):nums[first], nums[i] = nums[i], nums[first]     # 交换backtrack(first+1)                              # 处理后续元素nums[first], nums[i] = nums[i], nums[first]     # 回溯(换回来)backtrack(0)return resprint(permute([1,2,3]))

2.子集

问题:

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

方法1:回溯法

# 方法1:回溯法
def subsets(nums):res = [[]]          # 保存最终结果path = []           # 包含子集def backtrack(first, path):for i in range(first, len(nums)):path.append(nums[i])                # 记录当前子集res.append(path.copy())             # 将当前子集添加进结果backtrack(i+1, path)                # 尝试后面的可能path.pop()                          # 回溯backtrack(0, [])return res

方法2:迭代法

# 方法2:迭代法(保存之前元素,逐步扩展后续元素)
def subsets(nums):res = [[]]for num in nums:res += [subset + [num] for subset in res]return res

相关文章:

  • 电流舵DAC设计(二)
  • Vue-Leaflet地图组件开发(三)地图控件与高级样式设计
  • Python学习——排序
  • Java严格模式withResolverStyle解析日期错误及解决方案
  • AI架构师修炼之道
  • 深入解析Java21核心新特性(虚拟线程,分代 ZGC,记录模式模式匹配增强)
  • 指针的使用——字符、字符串、字符串数组(char*)
  • Cesium快速入门到精通系列教程八:时间系统
  • Razor编程RenderXXX相关方法大全
  • ChatterBox - 轻巧快速的语音克隆与文本转语音模型,支持情感控制 支持50系显卡 一键整合包下载
  • Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
  • 异步跟栈 webpack
  • 【Elasticsearch】映射:fielddata 详解
  • Linux云原生架构:从内核到分布式系统的进化之路
  • 深入解析 Qwen3-Embedding 的模型融合技术:球面线性插值(Slerp)的应用
  • 信息收集:从图像元数据(隐藏信息收集)到用户身份的揭秘 --- 7000
  • 第1课、LangChain 介绍
  • 风控系统中常用的概念和架构学习
  • uni-app学习笔记三十三--触底加载更多和下拉刷新的实现
  • Linux性能调优:从内核到应用的极致优化
  • 台州建设局招标投标网站/留号码的广告网站
  • 青岛网站建设铭盛信息/bt磁力链好用的引擎
  • 网站建设步骤与时间表/2345导航网址
  • 上海网站建设联系电话/直通车怎么开效果最佳
  • 怎么在网站做系统/百度竞价最低点击一次多少钱
  • 郑州金水区网站建设/百度云账号登录