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

算法第25天 | 491. 非递减子序列、46. 全排列、47. 全排列 II

491. 非递减子序列

题目

在这里插入图片描述

思路与解法

class Solution:def findSubsequences(self, nums: List[int]) -> List[List[int]]:self.res = []self.path = []self.backtracking(nums, 0)return self.resdef backtracking(self, nums, starIdx:int):if len(self.path) >= 2:self.res.append(self.path[:])i = starIdxused = set()while i < len(nums):if (not self.path or nums[i] >= self.path[-1]) and nums[i] not in used:used.add(nums[i])self.path.append(nums[i])self.backtracking(nums, i+1)self.path.pop()i += 1

46. 全排列

题目

在这里插入图片描述

思路与解法

class Solution:def permute(self, nums: List[int]) -> List[List[int]]:self.res = []self.path = []self.backtracking(nums)return self.resdef backtracking(self, nums):if len(self.path) == len(nums):self.res.append(self.path[:])returnfor i in range(len(nums)):if nums[i] not in self.path:self.path.append(nums[i])self.backtracking(nums)self.path.pop()

47. 全排列 II

题目

在这里插入图片描述

思路与解法

class Solution:def permuteUnique(self, nums):nums.sort()  # 排序result = []self.backtracking(nums, [], [False] * len(nums), result)return resultdef backtracking(self, nums, path, used, result):if len(path) == len(nums):result.append(path[:])returnfor i in range(len(nums)):if (i > 0 and nums[i] == nums[i - 1] and not used[i - 1]) or used[i]: # used[i-1] 为false,表明本层使用过。为True,表示是别的层使用的,那么相同的值这一层就可以用continueused[i] = Truepath.append(nums[i])self.backtracking(nums, path, used, result)path.pop()used[i] = False
http://www.xdnf.cn/news/572437.html

相关文章:

  • Java 实现二进制与十进制之间的互相转换
  • 校平机的原理、应用及发展趋势
  • Vue3学习(Vue3.3新特性——defineModel宏详解)
  • OpenCv高阶(十六)——Fisherface人脸识别
  • MySQL 索引的增删改查
  • Docusaurus Umami
  • 算法优选系列(9.BFS 解决拓扑排序)
  • GStreamer (四)交叉编译
  • 华为eNSP无线AC/AP组网实战
  • 基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告
  • 现代计算机图形学Games101入门笔记(二十)
  • V少JS基础班之第五弹
  • ElasticSearch导读
  • 【网络安全】日志采集、监控任务守护进程详细教程(附实战案例)
  • 打卡31天
  • Python学习Day1:安装
  • 谷歌2025年I/O开发者大会热点总结
  • shell脚本总结3
  • 【LLMs篇】12:Qwen3 技术报告翻译
  • 人工智能路径:技术演进下的职业发展导航
  • 20个关于Java编程语言的常见问题
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 2025年人工智能新应用与新技术全景解析
  • Qt+线段拖曳示例代码
  • 【UE5】环形菜单教程
  • 现代计算机图形学Games101入门笔记(十九)
  • 汽车电子电气架构诊断功能开发全流程解析
  • Linux nbd 网络块设备(2)-内核实现
  • fork 和 写时拷贝
  • NV009NV010美光闪存颗粒NV011NV012