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

代码随想录算法训练营第二十九天| 491 递增子序列 46 全排列

目录

491 递增子序列

46 全排列


491 递增子序列

在dfs中进行判断,如果path的长度大于1,则将其添加到res中。

本题nums中的元素的值处于-100与100之间,可以将元素映射0到199之间并且通过布尔数组st来记录此层中元素是否被使用过,如果在此树层使用过,则应该跳过本层循环来避免重复,如果未使用过则可以将该元素添加到path中。

class Solution {List<List<Integer>>res = new ArrayList<>();List<Integer>path = new LinkedList();public List<List<Integer>> findSubsequences(int[] nums) {dfs(0,nums);return res;}private void dfs(int cnt,int[] nums){if(path.size() >= 2){res.add(new LinkedList(path));//这里不返回}boolean st[] = new boolean[205];//nums中的元素位于-100到100之间,可以将其映射到0到200中,st用来记录此层元素是否被遍历过for(int i = cnt;i < nums.length;i++){if(path.size() > 0 && path.get(path.size() - 1) > nums[i])continue;//如果不能形成递增序列则跳过此层循环if(st[nums[i] + 100])continue;//该树层出现过该元素,会导致重复,应该跳过此层循环st[nums[i] + 100] = true;path.add(nums[i]);dfs(i + 1,nums);path.remove(path.size() - 1);}}
}

时间复杂度O(2^{n}×n)

空间复杂度O(n)

46 全排列

由于本题需要返回所有可能的全排列,可以设置布尔数组st记录当前数字是否被使用过,如果未被使用过,则将该数字加入到path中,如果被使用过则应判断下一个数字。 

class Solution {List<List<Integer>>res = new ArrayList<>();List<Integer>path = new LinkedList<>();boolean st[];public List<List<Integer>> permute(int[] nums) {st = new boolean[nums.length];dfs(nums);return res;}private void dfs(int nums[]){if(path.size() == nums.length){res.add(new LinkedList(path));return;}for(int i = 0;i < nums.length;i++){if(st[i])continue;st[i] = true;path.add(nums[i]);dfs(nums);path.remove(path.size() - 1);st[i] = false;}}
}

时间复杂度O(n×n!)

空间复杂度O(n)

http://www.lryc.cn/news/237274.html

相关文章:

  • (动手学习深度学习)第13章 实战kaggle竞赛:CIFAR-10
  • Go 语言中的map和内存泄漏
  • 前缀和(c++,超详细,含二维)
  • 详解FreeRTOS:二值信号量和计数信号量(高级篇—2)
  • 持续集成交付CICD:Jenkins通过API触发流水线
  • 【Python】12 GPflow安装
  • Ubuntu源码编译gdal3.6.2
  • 【LeetCode】160. 相交链表
  • 数据集笔记:NGSIM (next generation simulation)
  • 解决docker运行elastic服务端启动不成功
  • mysql数据库中mysql database 数据被破坏产生的一系列问题
  • 基于变形卷积和注意机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)
  • 05-Spring Boot工程中简化开发的方式Lombok和dev-tools
  • AIGC 技术在淘淘秀场景的探索与实践
  • ANSYS网格无关性检查
  • 设计模式-责任链-笔记
  • SpringMvc请求原理流程
  • 【开源】基于Vue.js的音乐偏好度推荐系统的设计和实现
  • 采集1688整店商品(店铺所有商品、店铺列表api)
  • IObit Unlocker丨解除占用程序软件
  • 开发一款小程序游戏需要多少钱?
  • 基于Vue+SpringBoot的校园电商物流云平台开源项目
  • 庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片
  • 002 OpenCV dft 傅里叶变换
  • 力扣:171. Excel 表列序号(Python3)
  • C++中结构体的初始化
  • vue3+vite+ts 发布自定义组件到npm
  • mybatis使用xml形式配置
  • 开源简历生成器OpenResume
  • AI变现之Gpts搞流量+赚钱