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

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

leecode 解題總結:31. Next Permutation

2019-11-10 20:44:16
字體:
來源:轉載
供稿:網友
#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
久久久精品久久| 国内精品久久久久久影视8| 日韩黄色高清视频| 亚洲成人国产精品| 91国产美女在线观看| 日韩欧美国产高清91| 亚洲一区免费网站| 久久精品国产一区二区三区| 日韩激情av在线播放| 国内精品国产三级国产在线专| 成人亚洲综合色就1024| 日本国产高清不卡| 国产日韩欧美视频| 成人免费大片黄在线播放| 欧美黑人一区二区三区| 69av成年福利视频| 国模视频一区二区三区| 136fldh精品导航福利| 国外成人在线播放| 亚洲高清不卡av| 久久久在线免费观看| 日本一区二区三区四区视频| www.色综合| 精品免费在线观看| 欧美高清在线视频观看不卡| 欧美尺度大的性做爰视频| 亚洲bt天天射| 成人写真福利网| 欧美老肥婆性猛交视频| 国产精品av电影| 亚洲国产成人爱av在线播放| 亚洲国产91精品在线观看| 色综合久久精品亚洲国产| 欧美极品少妇xxxxⅹ免费视频| 久久久天堂国产精品女人| 亚洲精品午夜精品| 成人精品aaaa网站| 综合激情国产一区| 亚洲高清av在线| 亚洲一区二区黄| 国产国语刺激对白av不卡| 秋霞午夜一区二区| 久久亚洲一区二区三区四区五区高| 国产亚洲人成网站在线观看| 狠狠久久五月精品中文字幕| 亚洲激情在线观看视频免费| 亚洲区一区二区| 国产精品7m视频| 国产精品永久在线| 日韩电影免费观看在线观看| 午夜精品一区二区三区在线播放| 中文亚洲视频在线| 日韩中文在线观看| 久久国产精品电影| 欧美综合激情网| 97色在线视频| 日韩高清欧美高清| 高清视频欧美一级| 神马久久桃色视频| 91精品国产91久久久久久吃药| 日韩精品视频三区| 欧美日韩在线一区| 欧美精品情趣视频| 黄色成人在线免费| 亚洲视频在线看| 福利视频导航一区| 国产日韩综合一区二区性色av| 成人欧美一区二区三区黑人孕妇| 亚洲999一在线观看www| 国产狼人综合免费视频| 日韩av免费看网站| 日韩三级影视基地| 国产成人涩涩涩视频在线观看| 亚洲精品在线不卡| 欧美激情一二三| 久久久久久av| 久久免费在线观看| 日韩黄色在线免费观看| 97香蕉超级碰碰久久免费软件| 日本欧美中文字幕| 日韩黄色在线免费观看| 日韩av手机在线| 性夜试看影院91社区| 亚洲午夜国产成人av电影男同| 亚洲国产欧美在线成人app| 国产精品最新在线观看| 91久久在线视频| 国产亚洲精品久久久优势| 成人国产亚洲精品a区天堂华泰| 日韩在线中文视频| 亚洲深夜福利网站| 欧美黑人又粗大| 中文字幕亚洲字幕| 精品夜色国产国偷在线| 91精品视频在线看| 国产精品国模在线| 欧美性猛交99久久久久99按摩| 国产亚洲激情在线| 亚洲另类欧美自拍| 91在线免费网站| 亚洲毛片在线观看| 97av在线影院| 久久久久久久久国产| 欧美性猛交99久久久久99按摩| 亚洲影视中文字幕| 最近2019中文字幕大全第二页| 欧美伦理91i| 亚洲精品国精品久久99热一| 伊人久久男人天堂| 影音先锋欧美在线资源| 亚洲乱码一区av黑人高潮| 国产精品免费小视频| 久久精品国产91精品亚洲| 日韩在线观看高清| 亚洲黄色av网站| 日韩免费黄色av| 中文字幕日韩在线播放| 欧美日韩美女在线| 欧美成aaa人片在线观看蜜臀| 成人国产精品久久久久久亚洲| 日韩欧美精品网站| 免费91在线视频| 亚洲国产日韩一区| 久久久久久久久久久免费| 欧美大片网站在线观看| 国产一区二区在线播放| 成人欧美在线观看| 成人精品一区二区三区| 北条麻妃久久精品| 中文字幕综合一区| 欧美三级欧美成人高清www| 黑人精品xxx一区| 91欧美精品午夜性色福利在线| 精品久久久中文| 国产精品亚洲片夜色在线| 奇米四色中文综合久久| 亚洲欧美日韩天堂一区二区| 欧美视频精品一区| 这里只有精品在线播放| 国产精品吴梦梦| 久久99精品久久久久久噜噜| 亚洲自拍偷拍在线| 亚洲视频视频在线| 欧美日韩国产999| 91精品国产91久久久久久吃药| 欧美激情亚洲综合一区| 亚洲精品久久视频| 久久久欧美一区二区| 久久精品欧美视频| 亚洲最大福利视频网站| 中文字幕日韩av综合精品| 亚洲毛片在线看| 欧美激情日韩图片| 久久久久久久久久久成人| 欧美成人高清视频| 亚洲人成人99网站| 成人黄色生活片| 亚洲美女在线观看| 国产一区二区三区视频免费| 国产69精品久久久| 国产亚洲日本欧美韩国| 欧美一级视频一区二区| 两个人的视频www国产精品| 久久精品精品电影网|