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

LeetCode 刷题【31. 下一个排列】

31. 下一个排列

自己做

解:排序实现

class Solution {
public: void nextPermutation(vector<int>& nums) {int nums_len = nums.size();if(nums_len == 1)          //只有一个元素不处理,直接返回return;int i = nums_len - 2;       //前一元素int j = nums_len - 1;       //后一元素//找到前一元素比后一元素小的元素while(i >= 0 && nums[i] >= nums[j]){j = i;i--;                    //前移}//这里要么发现了前一元素(i = xxx)比后一元素小,要么整个数组都是倒序的(i = -1)//倒序的情况if(i == -1)                                          //如果数组是倒序的return sort(nums.begin(), nums.end());         //升序排序//找到比i大的最小值(从j往后的位置)//将i往后的元素重新排为升序vector<int>::iterator it = nums.begin();for(int z = 0; z < i + 1; z++)          //找到i+1位置的指针it++;sort(it,nums.end());                    //排序i+1往后的元素(升序)for(int z = j; z < nums_len; z++)if(nums[z] > nums[i]){                      //找到了//交换元素int temp = nums[z];nums[z] = nums[i];nums[i] = temp;break;}//交换后重新排序sort(it,nums.end());                    //排序i+1往后的元素(升序)}
};

http://www.xdnf.cn/news/1247995.html

相关文章:

  • Apache OFBiz Scrum 组件命令注入漏洞
  • 力扣148:排序链表
  • 不可变集合
  • 笔记学习杂记
  • nordic通过j-link rtt viewer打印日志
  • Linux网络编程:TCP初体验
  • 永磁同步电机的矢量控制
  • Python包安全工程实践:构建安全可靠的Python生态系统
  • Redis类型之String
  • Python深度学习:从入门到进阶
  • ELK是什么
  • 分布式微服务--Nacos持久化
  • linux定时器管理 timer_*系统调用及示例
  • 每日五个pyecharts可视化图表-bars(4)
  • 系统设计入门:成为更优秀的工程师
  • iptables 里INPUT、OUTPUT、FORWARD 三个链(Chain)详解
  • MATLAB实现的机载合成孔径雷达回波生成和处理
  • zyh贪心类题目补题报告
  • 灰色优选模型及算法MATLAB代码
  • GoLand 项目从 0 到 1:第五天 —— 角色权限中间件实现与事务控制
  • 三极管三种基本放大电路:共射、共集、共基放大电路
  • 使用公众号的消息模板给关注用户发消息
  • Pycaita二次开发基础代码解析:参数化模板创建与设计表驱动建模
  • RHCA03--硬件监控及内核模块调优
  • MCP与Function Calling
  • SAP FI模块凭证增强逻辑的策略
  • C++ string类
  • NLP自然语言处理 02 RNN及其变体
  • GPS信号捕获尝试(上)
  • 基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程