leetcode 738. Monotone Increasing Digits | 738. 单调递增的数字(Java)

x33g5p2x  于2021-11-25 转载在 Java  
字(0.6k)|赞(0)|评价(0)|浏览(284)

题目

https://leetcode.com/problems/monotone-increasing-digits/

题解

先把 num 的每一位转化为数组。

从左往右找第一个 前>后 的位置,记为a[i]。

指针从 i 位置开始,回退到 a[i-1]==a[i] 的第一个位置。新的位置仍记为 i。

最后,将 a[i]–,i 以后的位置全置为 9,生成新的数组即为所求。

  1. class Solution {
  2. public int monotoneIncreasingDigits(int n) {
  3. int L = String.valueOf(n).length();
  4. int[] arr = new int[L];
  5. for (int i = L - 1; i >= 0; i--) {
  6. arr[i] = n % 10;
  7. n /= 10;
  8. }
  9. for (int i = 0; i < L - 1; i++) {
  10. if (arr[i] > arr[i + 1]) {
  11. while (i > 0 && arr[i - 1] == arr[i]) i--;
  12. arr[i] = arr[i] - 1;
  13. for (int j = i + 1; j < L; j++) {
  14. arr[j] = 9;
  15. }
  16. break;
  17. }
  18. }
  19. int result = 0;
  20. for (int i = 0; i < L; i++) {
  21. result *= 10;
  22. result += arr[i];
  23. }
  24. return result;
  25. }
  26. }

相关文章

最新文章

更多