日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode--738. 单调递增的数字

發(fā)布時間:2024/7/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode--738. 单调递增的数字 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給定一個非負(fù)整數(shù)?N,找出小于或等于?N?的最大的整數(shù),同時這個整數(shù)需要滿足其各個位數(shù)上的數(shù)字是單調(diào)遞增。

(當(dāng)且僅當(dāng)每個相鄰位數(shù)上的數(shù)字?x?和?y?滿足?x <= y?時,我們稱這個整數(shù)是單調(diào)遞增的。)

示例 1:

輸入: N = 10
輸出: 9
示例 2:

輸入: N = 1234
輸出: 1234
示例 3:

輸入: N = 332
輸出: 299
說明: N?是在?[0, 10^9]?范圍內(nèi)的一個整數(shù)。

思路:

如果a[i]一直大于等于a[i-1],直接輸出就好

如果不是,需要判斷,主要分兩種情況:

1.如果a[i]<a[i-1]并且a[i-1]>a[i-2],則a[i-1]-=1,后面的都變?yōu)?

例如:123453->123449

2.如果a[i]<a[i-1]并且a[i-1]>=a[i-2],則一直向前遍歷,直到a[k]!=a[i-1],然后a[k]-=1,h后面的都變?yōu)?

例如:123332->122999

提交的代碼:

class?Solution?{

????public?int?monotoneIncreasingDigits(int?N)?{

????????int?t,sum=0,i=0,n=1,b;

????????????int?a[]?=?new?int[12];

????????????t?=?N;

????????????while(t!=0)

????????????{

????????????????t?=?t/10;

????????????????i++;

????????????}

????????????t?=?N;

????????????b=i;

????????????while(t!=0)

????????????{

????????????????a[i-1]?=?t%10;

????????????????t?=?t/10;

????????????????i--;

????????????}

????????????t=0;

????????????sum?=?a[0];

????????????for(i?=0;i<b;i++)

????????????{

????????????????if(i>0)

????????????????{

????????????????????if(a[i]>=a[i-1])

????????????????????{

????????????????????????sum?=?sum*10+a[i];

????????????????????????if(a[i]==a[i-1])

????????????????????????{

????????????????????????????n++;? //n用來記錄有多少個連續(xù)相同的數(shù)字

????????????????????????}

????????????????????????else

????????????????????????{

????????????????????????????n=1;

????????????????????????}

????????????????????????continue;

????????????????????}

????????????????????else

????????????????????{

????????????????????????while(n!=0)

????????????????????????{

????????????????????????????sum?=?sum-a[i-1-t];

????????????????????????????sum?=?sum/10;

????????????????????????????t++;

????????????????????????????n--;

????????????????????????????//System.out.println(sum);

????????????????????????}

????????????????????????a[i-t]?=?a[i-t]?-?1;

????????????????????????sum?=?sum*10+a[i-t];

???????????????????????//?System.out.println(sum);

????????????????????????for(int?j=i-t+1;j<b;j++)

????????????????????????{

????????????????????????????a[j]?=?9;

????????????????????????????sum?=?sum*10+a[j];

????????????????????????}

????????????????????????break;

????????????????????}

????????????????}

????????????}

????????????return?sum;

????}

}

總結(jié)

以上是生活随笔為你收集整理的Leetcode--738. 单调递增的数字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。