【算法刷题day29】Leetcode:491. 非递减子序列、46. 全排列、47. 全排列 II

文章目录

    • Leetcode 491. 非递减子序列
      • 解题思路
      • 代码
      • 总结
    • Leetcode 46. 全排列
      • 解题思路
      • 代码
      • 总结
    • Leetcode 47. 全排列 II
      • 解题思路
      • 代码
      • 总结

草稿图网站
java的Deque

Leetcode 491. 非递减子序列

题目:491. 非递减子序列
解析:代码随想录解析

解题思路

大题差不多的回溯。
当元素大于等于两个的时候要记录一下;使用HashSet来去重(树枝上可以重复,树层上不能重复)

代码

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> paths = new ArrayList<>();
    private void backtracking(int[] nums, int startIndex) {
        if (paths.size() >= 2)
            res.add(new ArrayList<>(paths));
        Set<Integer> set = new HashSet<>();
        for (int i = startIndex; i < nums.length; i++) {
            if (!paths.isEmpty() && nums[i] < paths.get(paths.size() - 1) || set.contains(nums[i]))
                continue;
            // if (i > startIndex && nums[i] == nums[i-1])
            //     continue;
            paths.add(nums[i]);
            set.add(nums[i]);
            backtracking(nums, i + 1);
            paths.remove(paths.size() - 1);
        }
    }
    public List<List<Integer>> findSubsequences(int[] nums) {
        backtracking(nums, 0);
        return res;
    }
}

总结

暂无

Leetcode 46. 全排列

题目:46. 全排列
解析:代码随想录解析

解题思路

使用一个used数组来记录是否遍历。

代码

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> paths = new ArrayList<>();
    boolean[] used;

    private void backtracking(int[] nums) {
        if (paths.size() == nums.length) {
            res.add(new ArrayList<>(paths));
            return;
        }
        for (int i = 0; i < nums.length; i++) {
            if (used[i] == true)
                continue;
            paths.add(nums[i]);
            used[i] = true;
            backtracking(nums);
            paths.remove(paths.size() - 1);
            used[i] = false;
        }

    }
    public List<List<Integer>> permute(int[] nums) {
        used = new boolean[nums.length];
        backtracking(nums);
        return res;
    }
}

总结

暂无

Leetcode 47. 全排列 II

题目:47. 全排列 II
解析:代码随想录解析

解题思路

使用之前的模板去重:

 if (i > 0 && nums[i] == nums[i-1] && used[i-1] == false)
	continue;

加上used[i-1]==false的原因是,如果used[i-1]==false则是同一树层;如果used[i-1]==true则是新的树枝。

代码

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> paths = new ArrayList<>();
    boolean[] used;

    private void backtracking(int[] nums) {
        if (paths.size() == nums.length) {
            res.add(new ArrayList<>(paths));
            return;
        }
        for (int i = 0; i < nums.length; i++) {
            if (i > 0 && nums[i] == nums[i-1] && used[i-1] == false)
                continue;
            if (used[i] == true)
                continue;
            paths.add(nums[i]);
            used[i] = true;
            backtracking(nums);
            paths.remove(paths.size() - 1);
            used[i] = false;
        }

    }
    public List<List<Integer>> permuteUnique(int[] nums) {
        used = new boolean[nums.length];
        Arrays.sort(nums);
        backtracking(nums);
        return res;
    }
}

总结

暂无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件项目管理 - PERT 图

文章目录 1 概述1.1 PERT 图1.2 基础概念 2 相关计算2.1 最早时刻2.2 最迟时刻2.3 关键路径2.4 松弛时间 1 概述 1.1 PERT 图 PERT&#xff1a;Program Evaluation and Review Technique&#xff08;项目评估与评审技术&#xff09; PERT 图是一个有向图&#xff0c;图中的箭…

为什么还有人再问鸿蒙开发有必要学吗?

前言 学习鸿蒙开发&#xff0c;这事儿真的挺有必要的。鸿蒙操作系统&#xff0c;它厉害就厉害在高性能、可扩展&#xff0c;还特智能。现在智能设备和物联网火得不行&#xff0c;鸿蒙就是要成为这个时代的领头羊。它可不是来跟安卓抢饭碗的&#xff0c;它的眼光可远了&#xf…

切换plesk面板语言

近期购入了Hostease的Windows虚拟主机产品&#xff0c;由于进入他们主机Plesk面板后查看全都是英文的&#xff0c;对于英文也不是很懂&#xff0c;尤其是像这种专业 词汇的更不明白。因此这边咨询了Hostease的技术支持&#xff0c;寻求帮助了解到可以Plesk面板可以切换语言的&a…

STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档)

目录 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 2.2 设计电路规范 3、代码 4、资料清单 资料下载地址&#xff1a;STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档) 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 经过一个星期的画PCB&#xff0c;今…

【微信小程序】分包

整个小程序所有分包大小不超过 20M&#xff08;开通虚拟支付后的小游戏不超过30M&#xff09; 单个分包/主包大小不能超过 2M在小程序启动时&#xff0c;默认会下载主包并启动主包内页面&#xff0c;当用户进入分包内某个页面时&#xff0c;客户端会把对应分包下载下来&#xf…

Windows版MySQL5.7解压直用(免安装-绿色-项目打包直接使用)

windows下mysql分类 MySQL分为 安装版和解压版 安装版: 安装方便&#xff0c;下一步------下一步就OK了&#xff0c;但重装系统更换环境又要重新来一遍&#xff0c;会特别麻烦解压版&#xff08;推荐&#xff09;&#xff1a; 这种方式&#xff08;项目打包特别方便&#xf…

网红泡泡机单片机方案开发定制

酷得&#xff08;i-coder&#xff09;是一家专业的技术服务公司&#xff0c;致力于为各类智能硬件提供高效、稳定、安全的底层驱动解决方案。我们拥有一支经验丰富、技术精湛的团队&#xff0c;能够为客户提供全方位的底层驱动开发服务。 下面是酷得的开发流程&#xff1a; 1…

NH2-PEG-Silane 氨基聚乙二醇硅烷 生物材料表面修饰

NH2-PEG-Silane 氨基聚乙二醇硅烷 生物材料表面修饰 【中文名称】氨基聚乙二醇硅烷 【英文名称】Silane-PEG-NH2 【结 构】 【品 牌】碳水科技&#xff08;Tanshtech&#xff09; 【纯 度】95%以上 【保 存】-20 【规 格】500mg,1g,5g,10g 【产品特性】 生…

NLP基础—jieba分词

jieba分词 支持四种分词模式 精确模式 试图将句子最精确地切开,适合文本分析;全模式 把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;搜索引擎模式 在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。paddle模式 利用Paddle…

MATLAB 体素滤波(62)

MATLAB 体素滤波(62) 一、算法介绍二、算法实现1.代码(已验证,直接运行)一、算法介绍 这里的代码完成文件读入,体素滤波,效果显示,结果输出的操作,下面是效果截图,后面是代码。 体素滤波(Voxel Filtering)是一种用于三维点云数据处理的方法,其原理类似于二维图像…

Nginx内存池相关源码剖析(三)小块内存分配逻辑

在Nginx中&#xff0c;小块内存通常指的是那些大小相对较小、分配和释放频率较高的内存块。这些内存块由于数量众多、管理复杂&#xff0c;因此需要使用一种高效的内存管理机制来减少内存管理的开销和内存碎片的产生。 Nginx内存池通过一种预分配和复用的方式来管理小块内存。当…

Reka团队打造前沿多模态语言模型,展现卓越性能

eka&#xff0c;一家新兴的人工智能公司&#xff0c;近期推出了一系列强大的多模态语言模型 - Reka Core、Reka Flash和Reka Edge。这些模型不仅能处理和推理文本&#xff0c;还能够灵活应对图像、视频和音频等多种输入&#xff0c;在各项测试中表现出色&#xff0c;在某些指标…

AI光芯登上Science,开启算力新纪元

智能光芯片“太极”&#xff1a;清华大学的科技壮举&#xff0c;开启算力新纪元 在科技的浩瀚星海中&#xff0c;每一次创新都是对未知世界的探索和征服。近日&#xff0c;清华大学电子工程系与自动化系的联合团队&#xff0c;凭借其深厚的科研实力和创新精神&#xff0c;研发出…

OpenCV4.10使用形态运算提取水平线和垂直线

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV的查找命中或未命中 下一篇&#xff1a;OpenCV4.9图像金字塔-CSDN博客 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 应用两个非常常见的形态运算符&#xff08;即膨胀和…

【贪心 堆 】3081. 替换字符串中的问号使分数最小

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

OpenHarmony社交分享类APP开发实战

介绍 本示例是一个社交分享类APP&#xff0c;搭建了不同的页面向用户提供获取社交信息等能力。为了减少频繁权限弹窗对用户的干扰&#xff0c;同时提供更小的授权范围&#xff0c;使用了安全控件做临时授权场景。当用户实际点击了某种类型的安全控件时&#xff0c;会由系统弹出…

Golang 开发实战day11 - Pass By Value

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day11 - 按值…

SpringCloud中的nacos配置中心分析

一、概述 nacos可以作为配置管理使用&#xff0c;为各个微服务之间提供统一的配置中心&#xff0c;方便管理所有服务的配置。 二、什么是配置中心&#xff1f; 配置中心&#xff1a;一般SpringBoot项目都使用在resources下创建类似application.yml之类的配置文件来管理整个项目…

微信生态洗牌,私域拥抱公域的逐步试探

一直被人们奉为“私域神器”的微信&#xff0c;如今&#xff0c;变化越来越大了&#xff0c;微信的几次更新&#xff0c;透露出很多不一样的信息&#xff0c;在微信的很多使用场景中&#xff0c;都逐渐在向平台化公域流量分发的方向发展&#xff0c;不断的尝试从私域走向公域&a…

2024年【起重机械指挥】考试题及起重机械指挥复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试题是安全生产模拟考试一点通总题库中生成的一套起重机械指挥复审模拟考试&#xff0c;安全生产模拟考试一点通上起重机械指挥作业手机同步练习。2024年【起重机械指挥】考试题及起重机械指挥复审模拟…