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

代码随想录算法训练营第二十九天| LeetCode491.递增子序列* 、LeetCode46.全排列*、LeetCode47.全排列 II

#LeetCode 491. Non-decreasing Subsequences

#LeetCode 491. 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili

首先,本题不能考虑首先对数组排序,排序会导致数组直接变为一个递增的序列。本题依然是一个组合问题,所以无序,i 在for loop中依然是从startIndex 开始。与之前的去重逻辑不同,每一层会有一个uset 变量,是记录本层元素是否重复使用,新的一层uset都会重新定义,不是之前去重那样的全局变量,同样回溯的时候也不需要删除元素,也是在树层去重。

代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> findSubsequences(int[] nums) {backtracking(nums, 0);return result;}public void backtracking(int[] nums, int startIndex) {if (startIndex > nums.length) {return;}if (path.size() > 1) {result.add(new ArrayList<>(path));}HashSet<Integer> uset = new HashSet<>();for (int i = startIndex; i < nums.length; i++) {if (!path.isEmpty() && path.getLast() > nums[i] || uset.contains(nums[i])) {continue;}uset.add(nums[i]);path.addLast(nums[i]);backtracking(nums, i + 1);path.removeLast();}}
}

#LeetCode 46. Permutations

#LeetCode 46. 视频讲解:组合与排列的区别,回溯算法求解的时候,有何不同?| LeetCode:46.全排列_哔哩哔哩_bilibili

与之前的组合问题不同的地方在于,排列是有序的,[1, 2] 和[2, 1] 是不同的,如果用used 数组,那么在for loop 遍历的时候也是通过used 数组的标记,来判断下一次取具体哪一个数字。

回溯方法代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> permute(int[] nums) {boolean[] used = new boolean[nums.length];Arrays.fill(used, false);backtracking(nums, used);return result;}public void backtracking(int[] nums, boolean[] used) {if (path.size() == nums.length) {result.add(new LinkedList<>(path));return;}for (int i = 0; i < nums.length; i++) {if (used[i]) {continue;}used[i] = true;path.addLast(nums[i]);backtracking(nums, used);used[i] = false;path.removeLast();}}
}

#LeetCode 47. Permutations II

#LeetCode 47. 视频讲解:回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II_哔哩哔哩_bilibili

如果完成了之前的题目,那么这个题目较简单,排列的思想与上一个题目相似,去重与之前组合去重相似,记得数组需要排序。

回溯方法代码:

class Solution {List<List<Integer>> result = new ArrayList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> permuteUnique(int[] nums) {boolean[] used = new boolean[nums.length];Arrays.fill(used, false);Arrays.sort(nums);backtracking(nums, used);return result;}public void backtracking(int[] nums, boolean[] used) {if (path.size() == nums.length) {result.add(new LinkedList<>(path));return;}for (int i = 0; i < nums.length; i++) {if (i > 0 && nums[i] == nums[i-1] && !used[i-1]) {continue;}if (used[i]) {continue;}path.addLast(nums[i]);used[i] = true;backtracking(nums, used);used[i] = false;path.removeLast();}}
}

相关文章:

代码随想录算法训练营第二十九天| LeetCode491.递增子序列* 、LeetCode46.全排列*、LeetCode47.全排列 II

#LeetCode 491. Non-decreasing Subsequences #LeetCode 491. 视频讲解&#xff1a;回溯算法精讲&#xff0c;树层去重与树枝去重 | LeetCode&#xff1a;491.递增子序列_哔哩哔哩_bilibili 首先&#xff0c;本题不能考虑首先对数组排序&#xff0c;排序会导致数组直接变为一个…...

基于SpringBoot设计模式之开端

文章目录 前言引言开始 前言 为了更好的在项目中&#xff0c;能更加优雅的使用设计模式&#xff0c;比较针对性的解决我们的问题。我将在这个专栏详细的描述23种设计模式&#xff0c;为了与时俱进&#xff0c;我打算通过springboot的形式将23种设计模式全部撸完&#xff01; 引…...

tensorflow实现二分类

# 导入所需库和模块 from tensorflow.keras.layers import Dense, Input, Activation # 导入神经网络层和激活函数模块 from tensorflow.keras.models import Sequential # 导入Keras的Sequential模型 import pandas as pd # 导入Pandas库用于数据处理 import numpy as np …...

简化路径[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个字符串path&#xff0c;表示指向某一文件或目录的Unix风格 绝对路径 &#xff08;以/开头&#xff09;&#xff0c;请你将其转化为更加简洁的规范路径。在Unix风格的文件系统中&#xff0c;一个点.表示当前目录本身&#x…...

记一次若依项目组装树型结构数据的效率优化

背景 最近公司的项目使用了若依框架做开发&#xff0c;发现部门管理功能的部门如果有3万笔记录时&#xff0c;查询部门信息并组装为父子结构时运行特别缓慢&#xff0c;本地运行需要3分钟才能加载出来&#xff0c;因此接到优化的工作。 代码展示 首先看看表结构是这么定义的…...

秒杀系统之系统优化

3 系统优化 对于一个软件系统&#xff0c;提高性能可以有很多种手段&#xff0c;如提升硬件水平、调优JVM 性能&#xff0c;这里主要关注代码层面的性能优化—— 减少序列化&#xff1a;减少 Java 中的序列化操作可以很好的提升系统性能。序列化大部分是在 RPC 阶段发生&#x…...

【介绍下Python多线程,什么是Python多线程】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

FPGA相关论文阅读

一、Achieving 100Gbps Intrusion Prevention on a Single Server 论文名称中文翻译&#xff1a;在单台服务器上实现100Gbps吞吐量的入侵防御检测。 文章中的Mixed-1和Norm-1 二、Distributed Password Hash Computation on Commodity Heterogeneous Programmable Platforms…...

瑞芯微RK3588驱动设计之DVP并口摄像头2

dts配置看瑞芯微RK3588驱动配置之DVP并口摄像头1_rockchip 调试dvp设备 直接显示摄像头数据-CSDN博客 这里看看驱动的具体实现&#xff0c;以gc2145为例。 gc2145的驱动源码如下&#xff1a; // SPDX-License-Identifier: GPL-2.0 /** GC2145 CMOS Image Sensor driver*** C…...

安卓手机APP开发__支持64位的架构

安卓手机APP开发__支持64位的架构 目录 概述 读取你的APP 快速的状态检查 你的APP使用了原生的代码吗&#xff1f; 你的APP包含了64位的代码库吗&#xff1f; 确保在这些目录中有原生的代码库. 使用APK分析器查看原生的代码库 通过解压缩APK查看原生的代码库 用安卓工…...

Foxmail使用经验总结

目录 1.概述 2.版本历史 3.使用方法 3.1.安装和设置账户 3.2.收取和阅读邮件 ​​​​​​​3.3.发送邮件 ​​​​​​​3.4.管理联系人 ​​​​​​​3.5.日程安排和任务管理 ​​​​​​​3.6.定制设置和插件 ​​​​​​​3.7.跨平台同步 4.小结 1.概述 Fox…...

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…...

实验三:机器学习1.0

要求&#xff1a; 针对实验1和实验2构建的数据集信息分析 设计实现通过数据简介进行大类分类的程序 代码实现&#xff1a; 训练集数据获取&#xff1a; read_data.py import json import pickledef read_intro():data []trypathr"E:\Procedure\Python\Experiment\f…...

Vue 3 + Vite项目实战:常见问题与解决方案全解析

文章目录 一、项目使用本地图片打包后不显示1、在html中时候&#xff0c;本地运行和打包后线上运行都ok。2、用动态数据&#xff0c;本地运行ok&#xff0c;打包后线上运行不显示3、适用于处理单个链接的资源文件4、用动态数据且本地和线上访问都可显示 二、使用插件vite-plugi…...

飞天使-k8s知识点31-rancher的正确打开方式

文章目录 安装之前优化一下内核参数以及系统内核版本 rancher安装主要是使用以下命令nginx的配置为解决办法 安装之前优化一下内核参数以及系统内核版本 内核版本 4.17 cat > /etc/modules-load.d/iptables.conf <<EOF ip_tables iptable_filter EOF 然后重启服务器…...

Vue.component v2v3注册(局部与全局)组件使用详解

在Vue中&#xff0c;可以通过两种方式注册组件&#xff1a;局部注册和全局注册。 局部注册是在父组件中通过import和components选项注册的组件&#xff0c;仅在当前父组件及其子组件中可用。 // 父组件中import ChildComponent from ./ChildComponent.vue;export default {co…...

HNU-算法设计与分析-作业5

第五次作业【回溯算法】 文章目录 第五次作业【回溯算法】<1> 算法分析题5-3 回溯法重写0-1背包<2> 算法分析题5-5 旅行商问题&#xff08;剪枝&#xff09;<3> 算法实现题5-2 最小长度电路板排列问题<4> 算法实现题5-7 n色方柱问题<5> 算法实现…...

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频&#xff0c;短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤&#xff1a; 创建SoundPool对象&#xff0c;设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …...

两小时看完花书(深度学习入门篇)

1.深度学习花书前言 机器学习早期的时候十分依赖于已有的知识库和人为的逻辑规则&#xff0c;需要人们花大量的时间去制定合理的逻辑判定&#xff0c;可以说是有多少人工&#xff0c;就有多少智能。后来逐渐发展出一些简单的机器学习方法例如logistic regression、naive bayes等…...

21【Aseprite 作图】画白菜

1 对着参考图画轮廓 2 缩小尺寸 变成这样 3 本来是红色的描边&#xff0c;可以通过油漆桶工具&#xff08;取消 “连续”&#xff09;&#xff0c;就把红色的轮廓线&#xff0c;变成黑色的 同时用吸管工具&#xff0c;吸取绿色和白色&#xff0c;用油漆桶填充颜色 4 加上阴影…...

Zotero PDF Preview:在文献库中无缝预览PDF的终极指南

Zotero PDF Preview&#xff1a;在文献库中无缝预览PDF的终极指南 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 在学术研究和文献管理工作中&#xff0c;频繁…...

Adobe-GenP: 实现Adobe CC全版本破解的自动化补丁解决方案

Adobe-GenP: 实现Adobe CC全版本破解的自动化补丁解决方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe Creative Cloud系列软件作为创意行业的标准工具&am…...

OpenClaw备份方案:Phi-3-vision-128k-instruct模型快照与技能打包技巧

OpenClaw备份方案&#xff1a;Phi-3-vision-128k-instruct模型快照与技能打包技巧 1. 为什么需要备份OpenClaw工作环境 上周我的开发机突然遭遇硬盘故障&#xff0c;导致辛苦调试两个月的Phi-3-vision-128k-instruct微调参数全部丢失。这次惨痛教训让我意识到&#xff0c;对于…...

如何通过ImageToSTL实现图像三维化?解锁创意设计新可能

如何通过ImageToSTL实现图像三维化&#xff1f;解锁创意设计新可能 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side.…...

Qt图形界面开发:Phi-3-mini生成UI代码片段与信号槽连接示例

Qt图形界面开发&#xff1a;Phi-3-mini生成UI代码片段与信号槽连接示例 1. 引言&#xff1a;当AI遇上Qt界面开发 作为一名Qt开发者&#xff0c;你是否经常陷入这样的困境&#xff1a;每次新建一个对话框或窗口&#xff0c;都要重复编写相似的UI初始化代码&#xff1f;特别是当…...

告别繁琐:用快马生成openclaw自动化安装脚本,效率提升300%

最近在折腾openclaw这个工具时&#xff0c;发现手动安装过程实在太磨人了。每次都要反复查文档、处理各种依赖报错&#xff0c;光是环境配置就能耗掉大半天。于是琢磨着能不能搞个自动化方案&#xff0c;把安装流程标准化。试了几个方法后&#xff0c;终于在InsCode(快马)平台上…...

微信小程序框架详解

小程序包含一个描述整体程序的app实例和多个描述页面的page。其中app由三个文件构成:公共配置app.json、公共样式app.wxss、主体逻辑app.js。每个page最多由四个文件构成:页面配置page.json、页面结构page.wxml、页面样式page.wxss、页面主体逻辑page.js。 微信小程序的主体部…...

圣邦微电子冲刺港股:年营收39亿,净利5.3亿 派息1亿 已获IPO备案

雷递网 雷建平 4月2日圣邦微电子&#xff08;北京&#xff09;股份有限公司&#xff08;简称&#xff1a;“圣邦微电子”&#xff09;日前更新招股书&#xff0c;准备在港交所上市。圣邦微电子已在A股上市&#xff0c;截至今日收盘&#xff0c;圣邦微电子股价为67.45元&#xf…...

启动器故障排除指南:Java环境修复与第三方冲突解决

启动器故障排除指南&#xff1a;Java环境修复与第三方冲突解决 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher&#xff08;PCL&#xff09;。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 当使用Minecraft启动器安装Forge时遇到"java.lang.NoC…...

OpenClaw浏览器自动化:千问3.5-9B实现智能爬虫

OpenClaw浏览器自动化&#xff1a;千问3.5-9B实现智能爬虫 1. 为什么需要智能爬虫&#xff1f; 去年我接手了一个市场调研项目&#xff0c;需要从200多个电商页面提取商品信息和用户评价。传统爬虫遇到三个致命问题&#xff1a;动态加载内容抓取不全、验证码频繁拦截、非结构…...