題目
難度:中等
類型:貪心
題意:遇到逆序,就將當前位減1,同時將後面的數全部置爲9。循環判斷檢查前面是否產生了逆序。
class Solution {
public:
int monotoneIncreasingDigits(int N) {
if(N < 10) return N;
deque<int> num;
//將數字轉換位數組形式
do{
num.push_front(N%10);
N /= 10;
}while(N);
//遇到逆序就將前一位數值減一,同時將後面的數字全置爲9
for(int i = 0; i < num.size()-1; i++){
if(num[i] > num[i+1]){
num[i]--;
for(int j = i+1; j < num.size(); j++) num[j] = 9;
i = -1; //進入for循環後變爲0 繼續執行 因爲332 這種情況 這次操作以後
//變爲329 導致3和2逆序了 所以還要繼續循環
}
}
int res = 0;
for(int i = 0; i < num.size(); i++) res = res*10 + num[i];
return res;
}
};