亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

leecode 解題總結:31. Next Permutation

2019-11-10 20:18:34
字體:
來源:轉載
供稿:網友
#include <iostream>#include <stdio.h>#include <vector>#include <algorithm>using namespace std;/*問題: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,23,2,1 → 1,2,31,1,5 → 1,5,1分析:此問題要求產生按照字典順序產生下一個較大的數字排列。如果已經是最大的數字排列則返回最小的數字排列。關于排列問題,可以通過遞歸擺放的形式產生。但是遞歸擺放尤其要注意數字中有重復數字的情況。一種方法是:從初始狀態進行處理,遞歸到輸出當前輸入的排列后,則記錄當前輸入排列后面下一個排列為最終結果。但是這樣會耗費O(n!)時間,令外一種方法是下一個排列應該比上一個排列稍微大一點,也就是在原有排序的基礎上從后向前找到:如果當前數大于前面一個數就交換。如果整個排列的數是逆序的,說明已經是最大的,則重新排序一下變成最小的。輸入:3(元素個數)1 2 331 1 133 2 131 1 531 2 131 3 2輸出:1 3 21 1 11 2 31 5 12 1 12 1 31 報錯:Input:[1,3,2]Output:[3,1,2]Expected:[2,1,3]問題出在:不能簡單地將當前數>前面的一個數進行調換后處理,需要進行處理。也就是說可以將這些數生成排列,進行排序,找到當前數的下一個數,時間復雜度為O(n!)關鍵:1需要找到需要調換的較小的數字下標,該下標是從后向前,存在nums[i] < nums[i+1]中的下標i,注意這里不是讓nums[i] 和 nums[i+1]調換,而是需要再次從后向前尋找到nums[k] > nums[i],這里表明nums[k]是大于nums[i]中的最小數字,符合下一個排列一定是比原來排列稍大的條件,注意需要將nums中k+1~len-1的數組元素進行逆置,因為這一段元素已經是降序不是最小的*/class Solution {public:    void nextPermutation(vector<int>& nums) {        if(nums.empty())		{			return;		}		//非逆序,則從后向前:尋找到第一次出現:當前數值>前面一個數的位置,該數字就是需要替換的較小數		int len = nums.size();		int k = -1;		for(int i = len - 2 ; i >= 0; i--)		{			if(nums.at(i) < nums.at(i+1))			{				k = i;				break;			}		}		//如果是逆序,則排序。牛逼,這用數組下標判斷		if(-1 == k)		{			sort(nums.begin() , nums.end());			return;		}		//再次從后向前,尋找到第一次大于待替換的數值(從后向前默認是升序132,比如這里應該找到2比最前面帶替換的1大,所以交換后變成231,		//但是交換后后面變成標準的降序如31,此時已經確保首位變大,后面降序應該變成升序,因此需要逆置		for(int i = len - 1 ; i >= 0 ; i --)		{			if(nums.at(i) > nums.at(k))			{				int temp = nums.at(i);				nums.at(i) = nums.at(k);				nums.at(k) = temp;				break;//要退出			}		}		//將轉換后的較大位之后部分逆置,使其變成最小值		reverse(nums.begin() + k + 1  , nums.end());    }};void PRint(vector<int>& datas){	if(datas.empty())	{		cout << "no result" << endl;		return;	}	int size = datas.size();	for(int i = 0 ; i < size ; i++)	{		cout << datas.at(i) << " ";	}	cout << endl;}void process(){	int num;	int value;	vector<int> datas;	Solution solution;	while(cin >> num)	{		datas.clear();		for(int i = 0 ; i < num ; i++)		{			cin >> value;			datas.push_back(value);		}		solution.nextPermutation(datas);		print(datas);	}}int main(int argc , char* argv[]){	process();	getchar();	return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品成a人在线观看| 欧美高清性猛交| 不卡av在线网站| 亚洲国产一区二区三区在线观看| 国产精品扒开腿做| 羞羞色国产精品| 亚洲精品中文字幕有码专区| 国产视频999| 日韩精品视频免费在线观看| 精品国产欧美成人夜夜嗨| 欧美日韩人人澡狠狠躁视频| 97在线视频免费播放| 九九热精品视频| 精品国产乱码久久久久久天美| 国产精品一区二区性色av| 欧美性jizz18性欧美| xvideos国产精品| 午夜精品一区二区三区在线视频| 日韩电影在线观看免费| 草民午夜欧美限制a级福利片| 91精品在线观| 亚洲欧洲黄色网| 亚洲偷欧美偷国内偷| 国产一区二区美女视频| 欧美高清在线视频观看不卡| 国产精品爱久久久久久久| 欧美激情国产高清| 亚洲人精品午夜在线观看| 日韩高清电影好看的电视剧电影| 国产欧美日韩中文字幕在线| 亚洲大胆人体视频| 久久久精品电影| 草民午夜欧美限制a级福利片| 中文字幕一区二区三区电影| 久久久伊人日本| 精品中文字幕在线观看| 色综合亚洲精品激情狠狠| 久久久这里只有精品视频| 色综合久综合久久综合久鬼88| 国产激情视频一区| 久久亚洲成人精品| 亚洲一区二区久久久久久| 亚洲美女在线看| 亚洲乱亚洲乱妇无码| 久久91亚洲人成电影网站| 欧美在线免费视频| 狠狠躁天天躁日日躁欧美| 国产精品av在线| 成人国产精品色哟哟| 国产精品免费久久久久久| 欧美一区亚洲一区| 欧美在线视频网| 亚洲美女视频网| 精品国产欧美一区二区五十路| 日韩毛片在线观看| 久久天天躁狠狠躁老女人| 91po在线观看91精品国产性色| 超碰97人人做人人爱少妇| 国产一区二区三区在线视频| 亚洲国产精品va在线| 精品久久久久久久久久久久| 这里精品视频免费| 精品国产91久久久| 日韩性xxxx爱| 播播国产欧美激情| 国产精品免费久久久久久| 中文字幕亚洲一区| 欧美午夜www高清视频| 97欧美精品一区二区三区| 久久久亚洲国产天美传媒修理工| 国产91精品青草社区| 亚洲国产精品久久久久| 欧美成人性色生活仑片| 日韩美女毛茸茸| 欧美黑人一级爽快片淫片高清| 中文字幕久热精品视频在线| 久久久久久噜噜噜久久久精品| 日韩av免费看网站| 久久精品这里热有精品| 亚洲天堂男人天堂| 97在线观看免费| 国产精品一二三视频| 亚洲性69xxxbbb| 日韩视频永久免费观看| 亚洲综合成人婷婷小说| 日本一本a高清免费不卡| 成人午夜激情免费视频| 国产日韩精品在线| 精品久久久久久中文字幕一区奶水| 久久精品国产欧美激情| 91精品国产91久久久久福利| 亚洲黄色成人网| 亚洲欧美日韩另类| 色哟哟网站入口亚洲精品| 色爱av美腿丝袜综合粉嫩av| 亚洲视频axxx| 欧美中文字幕视频| 亚洲免费av电影| 久久久天堂国产精品女人| 国产亚洲精品一区二区| 久久久精品网站| 欧美香蕉大胸在线视频观看| 亚洲国产三级网| 97高清免费视频| 欧美国产日韩一区| 亚洲自拍欧美色图| 欧美多人爱爱视频网站| 亚洲国产高清自拍| 亚洲精品国精品久久99热| 亚洲精品v天堂中文字幕| 欧美日韩一区二区免费视频| 2025国产精品视频| 国产精品小说在线| 6080yy精品一区二区三区| 国产精品老牛影院在线观看| 国产在线视频2019最新视频| 成人av色在线观看| 国产不卡av在线| 欧美国产日韩视频| 中文字幕亚洲激情| 国产精欧美一区二区三区| 国产欧美精品一区二区三区-老狼| 精品亚洲精品福利线在观看| 91精品国产乱码久久久久久蜜臀| 久久综合免费视频影院| 日韩国产欧美精品一区二区三区| 欧美极品美女视频网站在线观看免费| 国产欧美日韩最新| 亚洲欧美中文在线视频| 欧美激情第6页| 国产精品久久久久久av福利| 中文字幕亚洲图片| 国产精品视频久久久久| 亚洲人成网站免费播放| 欧美性生交大片免费| 精品国产欧美一区二区三区成人| 中文字幕亚洲综合久久| 青草青草久热精品视频在线网站| 一区二区三区在线播放欧美| 久久视频免费在线播放| 国产精品久久久久久av| 亚洲精品福利视频| 久久成年人免费电影| 欧美日韩国产一区二区| 91探花福利精品国产自产在线| 久久av红桃一区二区小说| 中文字幕视频一区二区在线有码| 成人激情视频免费在线| 久久香蕉频线观| 欧美怡春院一区二区三区| 国产视频精品自拍| 91精品国产高清自在线看超| 在线精品国产成人综合| 日韩欧美一区二区三区久久| 亚洲白拍色综合图区| 国产日韩欧美视频在线| 韩国精品久久久999| 欧美一级在线亚洲天堂| 亚洲欧美日韩中文在线| 欧美黑人巨大xxx极品| 日韩中文字幕久久| 欧美国产视频一区二区| 久久好看免费视频| 欧美限制级电影在线观看|