zoukankan      html  css  js  c++  java
  • 力扣738题(单调递增的数组)

    738、单调递增的数组

    基本思想:

    贪心

    具体实现:

    举例:98

      一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),

      首先让strNum[i - 1]--

      然后strNum[i]变为9(不管是啥例子,最后一位直接变成9)

      这个整数就是89,即小于98的最大的单调递增整数。

    从前向后遍历,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。

    举例:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。

    从后向前遍历,就可以重复利用上次比较得出的结果了,从后向前遍历332的数值变化为:332 -> 329 -> 299

    代码:

    class Solution {
        public int monotoneIncreasingDigits(int n) {
            String[] strings = (n + "").split("");
            int start = strings.length;
            for (int i = strings.length - 1; i > 0; i--){
                if (Integer.parseInt(strings[i]) < Integer.parseInt(strings[i - 1])) {
                    strings[i - 1] = (Integer.parseInt(strings[i-1]) - 1) + "";
                    start = i;
                }
            }
            for (int i = start; i < strings.length; i++){
                strings[i] = "9";
            }
            return Integer.parseInt(String.join("",strings));
        }
    }
  • 相关阅读:
    机器学习 深度学习 网站
    Concat层解析
    网络可视化工具netron详细安装流程
    【中文】【deplearning.ai】【吴恩达课后作业目录】
    python 3 linux环境搭建django production环境
    eCharts画图
    mysql 外键
    django执行离线ORM、数据操作
    http 发包调试工具
    python有空仔细研究
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15455810.html
Copyright © 2011-2022 走看看