單調遞增的數字

2022-05-16 06:22:23 字數 657 閱讀 4606

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

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

輸入: n=332,  輸出 299

貪心思路

①.要使目標數字和 n 最接近,則需要盡可能保持高位數字不動

②.若某高位數字減 1,則後續所有低位數字都可直接更改為 9,可保持最接近

③.若低位數字更改為 9,則前一高位數字至少得減 1,可保持最接近

解題步驟

因此,首先從高位開始找到第乙個非公升序的位,將此位減 1,後續所有位改為 9;然後從此位開始往前判斷看更改後是否滿足公升序要求,若不滿足要求則把本位也提公升到 9,前一位繼續減 1,直到滿足公升序。

package main

import (

"fmt"

"strconv"

)func monotoneincreasingdigits(n int) int

if i < len(s)

for i++; i < len(s); i++

} ans, _ := strconv.atoi(string(s))

return ans

}func main()

單調遞增的數字

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

738 單調遞增的數字

738.單調遞增的數字 給定乙個非負整數n,找出小於或等於n的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。示例 1 輸入 n 10 輸出 9 示例 2 輸入 n 1234 輸出 1234 示例 3 輸入 n 332 輸出 299 說明 n 是在 0,10 9 範圍內的乙個整數。基本...

Leetcode 單調遞增的數字

給定乙個非負整數 n,找出小於或等於 n 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。當且僅當每個相鄰位數上的數字 x 和 y 滿足 x y 時,我們稱這個整數是單調遞增的。由於該數的組成是單調遞增的,所以,但我們檢索到乙個不單調的數字組合的時候,說明最高位一定比下一位要大。這個...