20201215:738. 單調遞增的數字

題目

給定一個非負整數 N,找出小于或等于 N 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。
(當且僅當每個相鄰位數上的數字 x 和 y 滿足 x <= y 時,我們稱這個整數是單調遞增的。)

示例 1:
輸入: N = 10
輸出: 9
示例 2:
輸入: N = 1234
輸出: 1234
示例 3:
輸入: N = 332
輸出: 299
說明: N 是在 [0, 10^9] 范圍內的一個整數。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/monotone-increasing-digits
著作權歸領扣網絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。

解題思路

第一反應:
從個位到最高位依次相鄰比較,不合條件,高位減1,低位全歸9

例:4125
2<5
1<2
4>1 → 3999

例:78329
2<9
3>2 → 78299
8>2 → 77999

例:70987
8>7 → 70979
9>7 → 70899
0<8
7>0 → 69999

修改:
從高位向低位依次相鄰比較,用tmp記錄連續(xù)相同數第一次出現(xiàn)的位置
flag=true
a. arr[i]=arr[i+1] → if(flag) {tmp=i, flag = false}
b. arr[i]<arr[i+1] → tmp=i+1, flag = true
c. arr[i]>arr[i+1] → arr[tmp]-=1, arr[j]=9 (j>i)

例:77886
7=7 → tmp = 0, false
7<8 → tmp = 1, true
8=8 → tmp = 2, false
8>6 → 77799

例:2223443
2=2 → tmp = 0, false
2=2 → tmp = 0
2<3 → tmp = 3, true
3<4 → tmp = 4, true
4=4 → tmp = 4, false
4>3 → 2223399

例:4125
4>1 → 3999

例:78329
7<8 → tmp = 1
8>3 → 77999

例:70987
7>0 → 69999

代碼落實

他人解法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 難度:★★★☆☆類型:數組方法:數學 力扣鏈接請移步本題傳送門[https://leetcode-cn.com/p...
    玖月晴閱讀 567評論 0 0
  • 本文是我自己在秋招復習時的讀書筆記,整理的知識點,也是為了防止忘記,尊重勞動成果,轉載注明出處哦!如果你也喜歡,那...
    波波波先森閱讀 2,942評論 0 10
  • ● 如何打印二叉樹每層的節(jié)點? 考察點:二叉樹 參考回答: 實現(xiàn)代碼: import java.util.Arra...
    le_u閱讀 615評論 0 0
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經沒多少時間了。班主任說已經安排了三個家長分享經驗。 放學鈴聲...
    飄雪兒5閱讀 7,822評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,858評論 0 11

友情鏈接更多精彩內容