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

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

题目

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 in-place, do not allocate 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

方法

从后往前。找到第一个i的值比i+1值小的位置。
寻找i以后比i大的最小的数,和i交换。

将i以后的数从小到大排序。
public void nextPermutation(int[] num) {        if (num != null && num.length != 0 && num.length != 1) {            int len = num.length;            int i = len;            for (; i > 1; i--) {                if (num[i - 1] > num[i - 2]) {                	                	int flag = 0;                	                	for (int k = i - 1; k < len; k++) {                		if (num[k] <= num[i - 2]) {                			flag = k - 1;                			break;                		}                	}                	if (flag == 0) {                		flag = len - 1;                	}                	int temp = num[flag];                	num[flag] = num[i - 2];                	num[i - 2] = temp;                	Arrays.sort(num, i - 1, len);                	break;                }                          }            if (i == 1) {                for (int k = 0; k < len / 2; k++) {                    int temp = num[k];                    num[k] = num[len - 1 - k];                    num[len - 1 - k] = temp;                }            }        }    }

转载于:https://www.cnblogs.com/mengfanrong/p/5236126.html

你可能感兴趣的文章
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
人与人之间的差距是从大学开始的
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
poj1201 查分约束系统
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>