当前位置: 首页 > article >正文

leecode738.单调递增的数字

 上来感觉就是程序设计基础的求每个位上的数的题,暴力枚举直接就超时了

class Solution {
private:
    bool judge(int num){
        int max=10;
        while(num!=0){
            int temp=num%10;
            if(max<temp)
                return false;
            else
                max=temp;
            num/=10;
        }
        return true;
    }
public:
    int monotoneIncreasingDigits(int n) {
        while(n){
            if(judge(n))
                return n;
            else 
                n--;
        }
        return n;
    }
};

 换个思路先把每个位上的数字存起来,从后向前遍历,如果前一个大于后一个那么就当前的位数字变为9,前一个减1,想到这里的时候原本是想用数组来存放的,但是发现10003这个数字的结果最后是9999,但是10003在遍历时会变成09003,显然不符合要求,应该是09999,所以应该是要记录从哪一位开始,其后的数字全部变成9,所以改了一下算法,用字符串处理最后再转为数字刚好可以把开头的0也抹掉

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string numStr=to_string(n);
        int start=numStr.size();
        for(int i=numStr.size()-1;i>0;i--){
            if(numStr[i-1]>numStr[i]){
                start=i;
                numStr[i-1]--;
            }
        }
        for(int i=start;i<numStr.size();i++)
            numStr[i]='9';
        return stoi(numStr);
    }
};


http://www.kler.cn/a/413011.html

相关文章:

  • 【智能制造-46】人机工程(工厂自动化)
  • Spring Boot 与 Spring Cloud Alibaba 版本兼容对照
  • 《嵌入式硬件设计》
  • 微信小程序条件渲染与列表渲染的全面教程
  • testImplementation和androidTestImplementation区别
  • ASP网络安全讲述
  • Java全栈开发实战:相亲网站开发教程
  • 比特币与区块链原理解析:矿机挖矿与去中心化的未来
  • DFS 创建分级菜单
  • 1、SpringBoo中Mybatis多数据源动态切换
  • ubuntu,rocky的安装和使用远程连接工具连接服务器
  • C++学习日记---第13天(类和对象---封装)
  • Python 中的装饰器是什么?
  • VOS3000历史话单的非法呼叫话单解决方案,IPSS模块安装详细说明,新增随机端口,新增海外功能,可大幅度提高安全性!
  • Kubeadm 安装 Kubernetes 高可用集群 v1.30.0
  • flink中barrier不对齐的原因和影响
  • Unity类银河战士恶魔城学习总结(P146 Delete Save file-P147 Encryption of save data删除数据和加密数据)
  • 软件测试丨Pytest生命周期与数据驱动
  • 下载安装Android Studio
  • C++模板(入门)
  • Go错误与日志处理—推荐实践
  • STM32F103系列单片机通用和复用I/O(GPIO)
  • 容器和它的隔离机制
  • linux模拟HID USB设备及wireshark USB抓包配置
  • 最小生成树-Prim与Kruskal算法
  • day25|leetCode 491.递增子序列,46.全排列 ,47.全排列 II