next permutation

原创 2016年08月30日 08:56:05
class Solution {
public:
	void nextPermutation(vector<int> &num) {
		int n = num.size();
		if (n == 1)return;
		for (int i = n - 2, ii = n - 1; i >= 0; i--, ii--)
		if (num[i] < num[ii])
		{
			int j = n - 1;
			while (num[j] <= num[i])j--;//从尾部找到第一个比num[i]大的数,一定可以找到
			swap(num[i], num[j]);
			reverse(num.begin() + ii, num.end());
			return;
		}
		reverse(num.begin(), num.end());
	}
};

相关文章推荐

LeetCode 31 Next Permutation (C,C++,Java,Python)

Problem: Implement next permutation, which rearranges numbers into the lexicographically next g...

排列组合的求法&next_permutation

即数学上的排列组合,这里提供了两种方式。 第一种是用STL头文件algorithm中的next_permutation或prev_permutation函数。但是这样只能求全排列,不能求组合。这种方法...

HDOJ 1716 排列2 next_permutation函数

Problem Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。Input 每组数据占一行,代表四...

《leetCode》:Next Permutation

题目Implement next permutation, which rearranges numbers into the lexicographically next greater permu...

求字典序的下一个排列(对应lc的Next Permutation)

如果字典序的下一个排列不存在,则返回升序排序。 过程如下: (1) 求满足关系式pj-1        I=max{ j | pj-1 (2) 求满足关系式pj-1 (3) 交换pj-1和ph的值 (...

next_permutation的原理和使用

Source:http://leonard1853.iteye.com/blog/1450085 1、碰到next_permutation(permutation:序列的意思) 今天在...
  • Tidal18
  • Tidal18
  • 2015年01月16日 11:38
  • 262

LeetCode Next Permutation

Description: Implement next permutation, which rearranges numbers into the lexicographically ne...

[C++]next_permutation()函数解析

C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种全排列方法,需要有头文件, 它被广泛的应用于为指定序列生成不同的排列。按照STL文档...

Leetcode——31. Next Permutation

题目Implement next permutation, which rearranges numbers into the lexicographically next greater permu...

【leetcode】【31】Next Permutation

一、问题描述 Implement next permutation, which rearranges numbers into the lexicographically next gre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:next permutation
举报原因:
原因补充:

(最多只允许输入30个字)