#include <functional>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cows int整型vector
* @return int整型vector
*/
vector<int> nextPermutation(vector<int>& cows) {
// write code here
// 判断是否进行了调转
bool flag = false;
int len = cows.size();
for(int i=len-1; i>0; --i)
{
if(cows[i-1]>cows[i])
{
flag = true;
int temp = cows[i-1];
cows[i-1] = cows[i];
cows[i] = temp;
// 细节:找到之后,[i,len-1]之一段得降序排列才行
sort(cows.begin()+i,cows.end(),greater<int>());
break;
}
}
// 已进行下一个更小的数组
if(flag)
return cows;
sort(cows.begin(), cows.end(), greater<int>());
return cows;
}
};