leetCode 738 單調遞增的數字

2021-10-12 03:08:44 字數 835 閱讀 1514

給定乙個非負整數 n,找出小於或等於 n 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。

(當且僅當每個相鄰位數上的數字 x 和 y 滿足 x <= y 時,我們稱這個整數是單調遞增的。)

示例 1:

輸入: n =

10輸出:

9

示例 2:

輸入: n =

1234

輸出:1234

示例 3:

輸入: n =

332輸出:

299

說明: n 是在 [0, 10^9] 範圍內的乙個整數。

找到第乙個遞減的位置i,將該位置以及之後的位置變為最大的'9',一開始不能隨便修改[i, n - 1]範圍的數字應盡可能保持高位與原數字保持不變,將盡可能靠近i的位置的數字減去1,也就是strn[i-1] - 1但是減去1可能會改變前面的遞增狀態,所以需要找到第乙個減去1之後不會改變遞增狀態的位置,然後將該位置減去1,然後將之後的位置全部變為'9'

class

solution

if(i < strn.length)

i++;while

(i < strn.length)

}return integer.

parseint

(new

string

(strn));

}}

leetcode 738 單調遞增的數字

描述 給定乙個非負整數 n,找出小於或等於 n 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。當且僅當每個相鄰位數上的數字 x 和 y 滿足 x y 時,我們稱這個整數是單調遞增的。示例 1 輸入 n 10 輸出 9 示例 2 輸入 n 1234 輸出 1234 示例 3 輸入 n...

LeetCode 738 單調遞增的數字

給定乙個非負整數 n,找出小於或等於 n 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。當且僅當每個相鄰位數上的數字 x 和 y 滿足 x y 時,我們稱這個整數是單調遞增的。示例 1 輸入 n 10 輸出 9 示例 2 輸入 n 1234 輸出 1234 示例 3 輸入 n 33...

LeetCode738單調遞增的數字

看到題目就想到了應該使用貪心,但是怎麼貪心卻不是很容易構思,分析一下題意,要找的是小於n的最大的數,並且這個數滿足從最高位到最低為非嚴格遞增 x y叫做非嚴格遞增 因為數字要求滿足的性質是對數的每一位的要求,所以考慮按照從每一位來構造。因為9是一位數字的最大值,所以如果從某一位向後全是9,在他之前的...