news 2026/6/17 15:51:50

LeetCode--491.递增子序列(回溯算法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode--491.递增子序列(回溯算法)

491.递增子序列

题目描述

给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。

数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

示例 1:

输入:nums = [4,6,7,7] 输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]

示例 2:

输入:nums = [4,4,3,2,1] 输出:[[4,4]]

提示:

  • 1 <= nums.length <= 15
  • -100 <= nums[i] <= 100

代码

classSolution{// 存放最终结果List<List<Integer>>result=newArrayList<>();// 当前递归路径(当前子序列)List<Integer>path=newArrayList<>();/** * 回溯函数 * * @param nums 原数组 * @param startIndex 当前层开始搜索的位置 */publicvoidbacktracking(int[]nums,intstartIndex){// 题目要求子序列长度至少为2// 满足条件就加入结果集if(path.size()>1){result.add(newArrayList<>(path));}/** * 本层去重集合 * * 作用: * 同一树层中,相同数字只使用一次 * * 注意: * 这里不能使用全局 used[] * 因为本题不能排序, * 相同元素不一定相邻 */Set<Integer>used=newHashSet<>();// 横向遍历(树层)for(inti=startIndex;i<nums.length;i++){/** * 剪枝1:树层去重 * * 如果当前数字在本层已经使用过, * 则跳过,避免重复结果 */if(used.contains(nums[i]))continue;/** * 剪枝2:保证递增 * * 如果当前数字小于路径最后一个数字, * 则不满足递增条件 */if(!path.isEmpty()&&nums[i]<path.get(path.size()-1)){continue;}// 本层标记已使用used.add(nums[i]);// 做选择path.add(nums[i]);// 递归下一层backtracking(nums,i+1);// 回溯:撤销选择path.remove(path.size()-1);}}publicList<List<Integer>>findSubsequences(int[]nums){// 从下标0开始搜索backtracking(nums,0);returnresult;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 15:49:26

ZigBee ZCL输入输出集群:从协议原理到工程实践详解

1. ZigBee ZCL输入输出集群&#xff1a;从协议到实践的深度解析在物联网设备开发&#xff0c;尤其是智能家居和工业传感控制领域&#xff0c;ZigBee协议因其低功耗、自组网和良好的互操作性而备受青睐。然而&#xff0c;真正让不同厂商的设备能够“听懂”彼此语言的&#xff0c…

作者头像 李华
网站建设 2026/6/17 15:47:50

让音乐在屏幕上舞动:MusicWave的渐变色彩可视化魔法

让音乐在屏幕上舞动&#xff1a;MusicWave的渐变色彩可视化魔法 【免费下载链接】MusicWave With MusicWave represent your Sound in a gradient colored Visualization 项目地址: https://gitcode.com/gh_mirrors/mu/MusicWave 想象一下&#xff0c;当音乐响起时&…

作者头像 李华
网站建设 2026/6/17 15:42:47

NSK紧凑型FSS2510滚珠丝杠技术解析

型号 FSS2510N1D0600 属于 sources 中 NSK 专为主打高速、静音与紧凑&#xff08;小型化&#xff09;**紧凑型 FA 系列&#xff08;FSS 型&#xff09;滚珠丝杠&#xff0c;采用高响应的端部导流循环方式**。 | 编码 | 属性 | 数据 | 内容 | |------|------|--------|------…

作者头像 李华
网站建设 2026/6/17 14:57:47

CodeWarrior IDE 5.5菜单命令深度解析与嵌入式开发实战指南

1. CodeWarrior IDE 5.5 核心价值与定位如果你在嵌入式开发领域摸爬滚打超过十年&#xff0c;那么“CodeWarrior”这个名字对你来说&#xff0c;绝不仅仅是一个工具&#xff0c;而是一个时代的印记。在那个单片机资源捉襟见肘、调试手段匮乏的年代&#xff0c;CodeWarrior IDE …

作者头像 李华
网站建设 2026/6/17 14:56:02

深入解析ZigBee PRO Stack:ZDO与AF API实战指南

1. ZigBee PRO Stack&#xff1a;物联网无线网络的基石在智能家居、工业传感这些需要成百上千个设备协同工作的场景里&#xff0c;如何让这些“小东西”自己组网、自己找路、稳定地“说话”&#xff0c;是开发者面临的核心挑战。ZigBee技术&#xff0c;特别是其增强版的ZigBee …

作者头像 李华
网站建设 2026/6/17 14:53:24

CANN/asc-devkit SuperKernel算子适配指南

算子适配说明 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.c…

作者头像 李华