当前位置: 首页 > 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.lryc.cn/news/611443.html

相关文章:

  • 《Python基础》第3期:使用PyCharm编写Hello World
  • C++ 变量初始化方式总结 | 拷贝初始化 | 列表初始化 | 值初始化
  • 【C语言】动态内存管理详解
  • Kafka 的基本操作(1)
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 【基础】第八篇 Java 位运算符详解:从基础到实战应用
  • 【java】大数据insert的几种技术方案和优缺点
  • 一种基于机器学习的关键安全软件WCET分析方法概述与实际工作原理举例
  • 多传感器融合
  • 机器人权利:真实还是虚幻,机器人权利研究如何可能,道德权利与法律权利
  • nodejs 编程基础01-NPM包管理
  • 《计算机“十万个为什么”》之 面向对象 vs 面向过程:编程世界的积木与流水线
  • 【android bluetooth 协议分析 01】【HCI 层介绍 30】【hci_event和le_meta_event如何上报到btu层】
  • 零基础人工智能学习规划之路
  • 电路基础相关知识
  • HBM Basic(VCU128)
  • 翻译的本质:人工翻译vs机器翻译的核心差异与互补性
  • NumPy字符串与数学函数全解析:从基础到实战应用
  • 3. 为什么 0.1 + 0.2 != 0.3
  • ubuntu自动重启BUG排查指南
  • 前端遇到页面卡顿问题,如何排查和解决?
  • C语言:20250805学习(文件预处理)
  • 集成学习与随机森林:从原理到实践指南
  • 高通平台Wi-Fi Display学习-- 调试 Wi-Fi Display 问题
  • 【Git】实现使用SSH方式连接远程仓库时的免密操作
  • 17.8 ChatGLM3/CogVLM一键部署指南:32K长文本+多模态实战,零基础搞定企业级模型微调(附完整代码)
  • 机器学习算法系列专栏:决策树算法(初学者)
  • systemui 的启动流程是怎么样的?
  • VUE2 学习笔记 合集
  • 系统设计入门:成为更优秀的工程师