最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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-下一個排列的評論 (共 條)

分享到微博請遵守國家法律
革吉县| 河源市| 平顺县| 海城市| 隆昌县| 沛县| 望城县| 紫阳县| 西平县| 陇西县| 孟津县| 西昌市| 双桥区| 罗田县| 莱阳市| 合阳县| 天气| 彝良县| 昌吉市| 平阴县| 枣强县| 康乐县| 武隆县| 安宁市| 微博| 景谷| 沧源| 宁阳县| 舟山市| 桂平市| 辽宁省| 佛山市| 嘉兴市| 绥宁县| 民乐县| 汉川市| 彭水| 玛多县| 宾阳县| 万全县| 乡城县|