关闭

next permutation

标签: leetcode
73人阅读 评论(0) 收藏 举报
分类:
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());
	}
};

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47826次
    • 积分:1061
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:33篇
    • 译文:0篇
    • 评论:8条
    最新评论