博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
31. Next Permutation
阅读量:5269 次
发布时间:2019-06-14

本文共 1286 字,大约阅读时间需要 4 分钟。

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

The replacement must be  and use only constant extra memory.

Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.

1,2,3 → 1,3,2

3,2,1 → 1,2,3
1,1,5 → 1,5,1

找数组全排列中,按字典序比较的下一个组合。

思路:找第一组顺序对(nums[i] > nums[i-1]). 在i之后找比nums[i-1]大的最小数nums[k],然后把nums[k]换到nums[i-1]位置,最后对i开始后面所有的数做一次排序。

1 class Solution { 2 public: 3     void nextPermutation(vector
& nums) { 4 int len = nums.size(); 5 for (int i=len-1; i>=1; --i) { 6 if (nums[i] > nums[i-1]) { 7 int key = nums[i-1]; 8 swap(nums[i], nums[i-1]); 9 for (int j=len-1; j>i; --j) {10 if ((nums[j] > key) && (nums[j] < nums[i-1]))11 swap(nums[i-1], nums[j]);12 }13 sort(nums.begin()+i, nums.end());14 return;15 }16 }17 sort(nums.begin(), nums.end());18 return;19 }20 };

 

转载于:https://www.cnblogs.com/Zzz-y/p/8951874.html

你可能感兴趣的文章
JavaScript 变量
查看>>
java实用类
查看>>
mysql 主从库同步
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
ABP入门系列(6)——定义导航菜单
查看>>
排序sort (一)
查看>>
Parrot虚拟机
查看>>
4.6上午
查看>>
linux之sort用法
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Redis-jedis模拟多线程购票
查看>>
聊一聊 Flex 中的 flex-grow、flex-shrink、flex-basis
查看>>
Gcc 安装过程中部分配置
查看>>
Logparser介绍
查看>>
Js实现客户端表单的验证
查看>>
python使用input()来接受字符串时一直报错“xxx is not defined”
查看>>
2016.7.15 落实字符及字符串读取的结果
查看>>
他看了几千份技术简历,愿意把技术简历的秘籍传授给你
查看>>