无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

LeetCode-031-下一個排列

2021-10-02 10:28 作者:雄獅虎豹  | 我要投稿

下一個排列

題目描述:實(shí)現(xiàn)獲取 下一個排列 的函數(shù),算法需要將給定數(shù)字序列重新排列成字典序中下一個更大的排列。

如果不存在下一個更大的排列,則將數(shù)字重新排列成最小的排列(即升序排列)。

必須 原地 修改,只允許使用額外常數(shù)空間。

示例說明請見LeetCode官網(wǎng)。

來源:力扣(LeetCode) ??

鏈接:https://leetcode-cn.com/problems/next-permutation/ ??

著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

解法一:遍歷數(shù)組

首先,如果數(shù)組為空或者數(shù)組只有一個元素,直接返回;

聲明一個變量handled表示是否找到更大的排列,默認(rèn)是false,left和right分別記錄找到更大排列需要調(diào)換的數(shù)字,然后雙重循環(huán)遍歷數(shù)組判斷是否存在更大的排列,具體遍歷過程如下:

  • 從數(shù)組的最后一位開始遍歷,如果存在前面的數(shù)字比當(dāng)前數(shù)字大的,則left和right分別記錄當(dāng)前索引位,并將handled更新為true,然后遍歷下一位;

  • 遍歷過程中需要判斷如果找到一種符合條件的數(shù)字,要判斷是否比之前已得到的情況更優(yōu),如果是,更新left和right。

然后根據(jù)handled判斷,如果為false,說明沒有更大的排列,也就是不存在下一個更大排列,將數(shù)字重新排列成最小的排列,就是將順序倒排;如果為true,則需要進(jìn)行如下處理:

  • 首先,將left和right位置的數(shù)字調(diào)換位置;

  • 然后將 right+1 后面的數(shù)字倒排,這一步是為了將后面的數(shù)字排列成最小的值;

  • 然后將 left+1到right-1 之間的數(shù)字跟 right+1到nums.length-1 的數(shù)字整體調(diào)換順序,這一步也是為了將left后面的數(shù)字排列成最小的值;

  • 然后將 left+1 位置的數(shù)字移到小于它的數(shù)字之后,這一步是為了獲取最終的排列結(jié)果。

【每日寄語】 努力是人生應(yīng)有的態(tài)度,睜開眼就是新的開始。



LeetCode-031-下一個排列的評論 (共 條)

分享到微博請遵守國家法律
商河县| 瑞丽市| 格尔木市| 彰化县| 大理市| 普格县| 舒兰市| 宁陵县| 酒泉市| 响水县| 金堂县| 巴彦淖尔市| 南漳县| 沽源县| 常熟市| 惠州市| 沙雅县| 克东县| 雅江县| 平湖市| 丰原市| 新营市| 陇西县| 敦化市| 呈贡县| 墨脱县| 阳东县| 张家界市| 额尔古纳市| 宜兴市| 成武县| 仙居县| 新竹县| 济源市| 尚义县| 双城市| 高密市| 西贡区| 蕲春县| 丹凤县| 永康市|