下一个排列 的 思路总结

文章目录

在这里插入图片描述

  • 思路分析
    • 倒序遍历:题目要求的是下一个排列,那么肯定数字的跳跃不能太大,所以可以比较好确定的是,遍历的顺序是倒序遍历
    • 比较方向:对于每一个数字,需要找到右边最大的比它小的数字,然后交换之后,剩余的数字进行升序排序

灵神题解

class Solution {
public:void nextPermutation(vector<int>& nums) {int n = nums.size();// 第一步:从右向左找到第一个小于右侧相邻数字的数 nums[i]int i = n - 2;while (i >= 0 && nums[i] >= nums[i + 1]) {i--;}// 如果找到了,进入第二步;否则跳过第二步,反转整个数组if (i >= 0) {// 第二步:从右向左找到 nums[i] 右边最小的大于 nums[i] 的数 nums[j]int j = n - 1;while (nums[j] <= nums[i]) {j--;}// 交换 nums[i] 和 nums[j]swap(nums[i], nums[j]);}// 第三步:反转 [i+1, n-1](如果上面跳过第二步,此时 i = -1)reverse(nums.begin() + i + 1, nums.end());}
};

错误代码示例

  • 我开始写的思路是,倒序遍历的思路没问题,但是找到合适的交换对象的时候,我找的是每一个数字左边第一个比它小的数字,然后交换的位置的右边再进行升序排列

  • 错误分析:下一个排列,应该是尽量操作右边的数字,并且我们是倒序遍历的,所以遍历过的部分的情况可以知道,所以寻找的交换顺序的时候,还是往右边进行考虑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud-面试题(49)

摘要&#xff1a; 1、通俗易懂&#xff0c;适合小白 2、仅做面试复习用&#xff0c;部分来源网络&#xff0c;博文免费&#xff0c;知识无价&#xff0c;侵权请联系&#xff01; 1. 什么是Spring Cloud框架&#xff1f;子项目哪几大类&#xff1f; Spring Cloud是一套分布式系…

资源查看-iostat命令

文章目录 系统中未安装 iostat 命令 1. 监控CPU与磁盘的基础负载 2. 诊断I/O性能瓶颈 3. 实时监控与动态采样 4. 特定设备或分区的精细化监控 5. 性能测试与基准数据生成 6. 结合其他工具进行综合调优 总结 结果输出速查表 第一部分:CPU统计信息 第二部分:设备/磁盘统计信息(…

STM32 HAL库外设编程学习笔记

STM32 HAL库外设编程 1. 概述 本文档是基于STM32 HAL库的外设编程学习笔记&#xff0c;主要包括以下外设的配置和使用方法&#xff1a; GPIO&#xff1a;通用输入输出接口ADC&#xff1a;模数转换器UART&#xff1a;通用异步收发器TIM&#xff1a;定时器I2C&#xff1a;内部…

DHCP服务配置与管理实战指南

DHCP 服务配置与管理笔记 一、DHCP 核心概念 1. DHCP 定义与功能 DHCP (Dynamic Host Configuration Protocol)&#xff1a;动态主机配置协议核心功能&#xff1a; 自动分配 IP 地址提供子网掩码、网关、DNS 等网络参数管理 IP 地址租约周期 典型应用&#xff1a;ADSL拨号、企业…

WebSocket 在多线程环境下处理 Session并发

WebSocket 在多线程环境下处理 Session并发时&#xff0c;常见问题包括状态冲突&#xff08;如 IllegalStateException&#xff09;、消息乱序、连接超时等。以下是综合各技术方案的解决方案&#xff0c;分为单机多线程和分布式集群两类场景&#xff1a;&#x1f512; 一、单机…

JDBC的连接过程(超详细)

JDBC&#xff08;Java Database Connectivity&#xff09;是 Java 用于访问数据库的标准 API&#xff0c;它允许 Java 程序与各种不同类型的数据库进行交互&#xff0c; 其连接数据库的过程主要包含以下几个步骤&#xff1a;1. 导入 JDBC 驱动依赖在使用 JDBC 连接数据库之前&a…

本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕校对增强版

1. 实现功能 M4-4: 校对增强版 (最终完全体) 本脚本是整个 Module 的最终形态&#xff0c;采用了“代码预处理 LLM校对”的终极方案&#xff1a; 代码预处理: 确定性地在每个语音片段后添加逗号&#xff0c;生成一份“标点草稿”。LLM校对: LLM 的任务被简化为“校对和修正”这…

MySQL数据库简介

1 简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB公司开发&#xff0c;属于 Oracle 旗下产品&#xff0c;是当今最流行的关系型数据库管理系统之一&#xff0c;在 WEB应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#…

[Oracle] UNPIVOT 列转行

Oracle数据库中的UNPIVOT是一种用于将列转换为行的SQL操作&#xff0c;它允许用户将多个列的数据转换为多行的形式&#xff0c;以便进行更灵活的数据分析和报表生成UNPIVOT主要用于将宽表(多列)转换为长表(多行)&#xff0c;减少表的列数&#xff0c;增加行数语法格式SELECT pi…

node.js 学习笔记3 HTTP

path模块 path模块主要用于操作路径。要使用path&#xff0c;首先需要引入path模块。require(path) path.resolve 用于拼接规范的绝对路径。 如果想拼接一个路径&#xff0c;有时候是使用字符串手动拼接的&#xff0c;但由于系统的规范不同&#xff0c;路径中的\和/无法统一…

Flutter Dialog、BottomSheet

属性说明title标题content内容actions按钮applicationName说明文字applicationVersion版本applicationLegalese版本基本使用class MyState extends State {AlertDialog delDialog(BuildContext context) {AlertDialog alertDialog AlertDialog(title: Text("提示"),…

《算法导论》第 19 章 - 斐波那契堆

引言斐波那契堆&#xff08;Fibonacci Heap&#xff09;是一种高效的可合并堆数据结构&#xff0c;由 Michael L. Fredman 和 Robert E. Tarjan 于 1984 年提出。它在许多优先队列操作中提供了极佳的 amortized&#xff08;摊还&#xff09;时间复杂度&#xff0c;尤其适用于需…

MySQL-日志

MySQL-日志前言一、错误日志&#xff08;error log&#xff09;二、慢查询日志(slow query log)三 、一般查询日志(general log)四、 事务日志重做日志&#xff08;redo log&#xff09;回滚日志&#xff08;undo log&#xff09;五、 二进制日志(bin log)/归档日志 > 数据同…

嵌入式C语言编程:策略模式、状态模式和状态机的应用

概述 在没有面向对象语法的C语言中&#xff0c;策略&#xff08;Strategy&#xff09;模式和状态&#xff08;State&#xff09;模式都通过“上下文 接口”组合来模拟多态。 它们在代码结构上几乎一致&#xff0c;但设计意图和应用场景却差异很大。 本文分三部分深入剖析&…

人工智能、机器学习、深度学习:2025技术革命的深度解析

目录 人工智能、机器学习、深度学习&#xff1a;技术革命的深度解析 引言 第一部分&#xff1a;人工智能的起源与演进 1.1 人工智能的定义 1.2 人工智能的历史 1.3 人工智能的关键概念 a.知识表示&#xff08;Knowledge Representation&#xff09; b.搜索算法&#xf…

【Python】常用内置模块

1.os 文件目录 import os# 创建文件夹 os.mkdir(dir) # 判断文件是否存在 os.path.exists(path) # 列出文件夹下文件列表 os.listdir(dir)""" 常用 """ # 当前文件相对路径 os.getcwd()# 当前文件绝对路径 os.path.abspath(__file__)# 当前文…

(Python)爬虫进阶(Python爬虫教程)(CSS选择器)

源代码&#xff1a;#导入库 import requests from bs4 import BeautifulSoup import pandas as pd#爬虫函数 def scrape_books():#1.基本网址连接base_url "http://books.toscrape.com"#2.获取基本网址responserequests.get(base_url)#3.检查是否正常访问if respons…

第七节 自然语言处理与Bert

自然语言处理与BERT模型&#xff1a;从基础到实践入门 自然语言处理&#xff08;NLP&#xff09;的核心目标之一是让计算机理解人类语言的语义和上下文。本文将从基础的字词表示出发&#xff0c;逐步解析传统模型的局限性、Self-attention的突破性思想&#xff0c;以及BERT如何…

攻击者瞄准加密技术的基础:智能合约

虽然利用许多智能合约中的安全漏洞已经成为网络攻击者的长期目标&#xff0c;但越来越多的安全公司开始关注使用欺诈性或混淆的智能合约从加密货币账户中窃取资金的骗局。 根据网络安全公司 SentinelOne 本周发布的分析报告&#xff0c;在最近一次引人注目的攻击中&#xff0c…

基于开源AI大模型、AI智能名片与S2B2C商城小程序的零售智能化升级路径研究

摘要&#xff1a;在零售业数字化转型浪潮中&#xff0c;人工智能技术正从“辅助工具”向“核心生产力”演进。本文聚焦开源AI大模型、AI智能名片与S2B2C商城小程序的协同应用&#xff0c;提出“数据感知-关系重构-生态协同”的三维创新框架。通过分析智能传感、动态画像与供应链…