step num 问题

简介: step num 问题

题目

定义何为step sum?
比如680,680 + 68 + 6 = 754,680的step sum叫754
给定一个正数num,判断它是不是某个数的step sum

解题思路

image.png
一个数X它的步骤和叫甲,一个数Y它的步骤和叫乙。
我首先有一个推论,如果Y>X,它的步骤和乙只可能大于甲。
image.png

二分
如果中间数的步骤和小于目标,则在1-mid中进行二分
如果中间数的二分和大于目标,则在mid+1-target进行二分
如果你二分都没有了,也没得到7268,说明这个7268不是任何数的步骤和
这个思想传统来自一个名词叫单调性,就往单调性上靠,给你提升了一点点单调性的敏感度

代码

    public static boolean isStepSum(int stepSum) {
        int L = 0;
        int R = stepSum;
        int M = 0;
        int cur = 0;
        while (L <= R) {
            M = L + ((R - L) >> 1);
            cur = stepSum(M);
            if (cur == stepSum) {
                return true;
            } else if (cur < stepSum) {
                L = M + 1;
            } else {
                R = M - 1;
            }
        }
        return false;
    }

    public static int stepSum(int num) {
        int sum = 0;
        while (num != 0) {
            sum += num;
            num /= 10;
        }
        return sum;
    }

总结

我们首先使用打表法来找出如果X大于Y,则X的步骤和也大于Y的步骤和这个结论
有了这个结论后,我们发现了其中的单调性,我们就可以使用二分了

相关文章
|
Shell Linux 网络安全
linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
333 0
|
Go 开发者
一文详解Go语言接口嵌套组合的精髓!
一文详解Go语言接口嵌套组合的精髓!
411 0
|
11月前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
1150 22
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
252 2
|
11月前
|
存储 安全 Java
商汤的API如何进行鉴权?
商汤的API如何进行鉴权?
273 2
|
Linux API C++
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(一)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
2855 3
|
12月前
|
安全 网络安全 数据安全/隐私保护
【Azure Developer】System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
158 2
|
NoSQL 安全 Java
解决Unknown redis exception及event executor terminated错误的方法
解决这类问题时,保持耐心和细致是关键。通常,通过系统地检查和排除潜在原因,大多数问题最终都能被解决。
1869 1
|
SQL Oracle 关系型数据库
|
存储 数据库 索引
B树与B+树区别
B树与B+树区别
3149 1