*Leetcode 738. Monotone Increasing Digits
阿新 • • 發佈:2018-12-13
這個難度的還是比較容易想的,找到最左邊不合法的位置 後面都設定成9即可
需要從右向左找 因為有 3312這種case,第二個3更新之後 第一個3一樣要更新。。
class Solution { public: int monotoneIncreasingDigits(int N) { string v = to_string(N); if (v.size() <= 1) return N; int i = v.size() - 2, j = v.size(); for (; i >= 0; i--) { if (v[i]<= v[i+1])continue; --v[i]; j = i; // break; } for (i = j + 1; i < v.size(); i++) { v[i] = '9'; } return stoi(v); } };
第一次寫的挫的程式碼
class Solution { public: int monotoneIncreasingDigits(int N) { string v = to_string(N); if (v.size() <= 1) return N; for (int i = 1; i < v.size(); i++) { if (v[i] < v[i-1]) { int j = i - 1; while (j >= 0 && v[j] > v[j+1]) { v[j] = v[j] - 1; j--; } int ret = 0; for (int k = 0; k <= j + 1; k++) { ret = ret * 10 + v[k] - '0'; } for (int k = j + 2; k < v.size(); k++) { ret = ret * 10 + 9 ; } return ret; } } return N; } };