尋找全排列的下乙個數

2021-10-23 13:25:16 字數 1122 閱讀 8445

題目:給出乙個正整數,找出這個正整數所有數字全排列的下乙個數。即就是在乙個整數包含數字的全部組合中,找到乙個大於且僅大於原數的新整數。例如:輸入12345,則返回12354。

解題思路:

從後向前檢視逆序區域,找到逆序區域的前一位,也就是數字交換的邊界;

讓逆序區域的前一位和逆序區域中大於它的最小的數字交換位置;

把原來的逆序區域轉為順序狀態。

**實現:

//找到全排列下乙個數

public

static

int[

]findnearestnumber

(int

numbers)

//2.把逆序區域的前一位和逆序區域中剛剛大於它的數字交換位置

int[

] numberscopy= arrays.

copyof

(numbers,numbers.length)

;//複製併入參,避免直接修改入參

exchangehead

(numberscopy,index)

;//3.把原來的逆序區域轉為順序

reverse

(numberscopy,index)

;return numberscopy;

}//找到數字置換的邊界

private

static

intfindtransferpoint

(int

numbers)

}return0;

}//交換位置

private

static

int[

]exchangehead

(int

numbers,

int index)

}return numbers;

}//把原來的逆序區域轉為順序

private

static

int[

]reverse

(int

num,

int index)

return num;

}

leetcode 尋找全排列的下乙個數

給定乙個正整數,實現乙個方法來求出離該整數最近的大於自身的 換位數 什麼是換位數呢?就是把乙個整數各個數字的數字進行全排列,從而得到新的整數。例如53241和23541。題目要求寫乙個方法來尋找最近的且大於自身的換位數。比如下面這樣 輸入12345,返回12354 輸入12354,返回12435 輸...

尋找全排列的下乙個數 Python

一 題目描述 給出乙個數,找出這個正整數所有數字全排列的下乙個數。即 在乙個整數所包含數字的全部組合中,找到乙個大於且僅大於原數的新整數。如 如果輸入12345,則返回12354 如果輸入12354,則返回12435 二 解題思路 首先當這5個數字逆序組合時最大 54321 順序組合時最小 1234...

讀書筆記 漫畫演算法 6 尋找全排列的下乙個數

給出乙個數,求出由每位數形成的所有全排列中,大於此數的最小值 注 我們給出的這個數每位都不同 具體的演算法描述如下 1.從後向前尋找逆序區域,並返回逆序區域的最左側索引 2.將nums index 1 與nums區間 index,nums.length 1 中大於nums index 1 的最小元素...