1281. 整数的各位积和之差

诸神缄默不语-个人CSDN博文目录
力扣刷题笔记


文章目录

  • [1. 简单粗暴的遍历](#1. 简单粗暴的遍历)
  • [2. 其实也是遍历,但是用Python内置函数只用写一行](#2. 其实也是遍历,但是用Python内置函数只用写一行)

1. 简单粗暴的遍历

Python版:

python 复制代码
class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        he=0
        ji=1
        while n>=1:
            last_number=n%10
            he+=last_number
            ji*=last_number
            n=n//10  #就是n=int(n/10)的意思
        return ji-he

Java版:

java 复制代码
class Solution {
    public int subtractProductAndSum(int n) {
        int he=0;
        int ji=1;
        while(n>=1){
            int last_number=n%10;
            he+=last_number;
            ji*=last_number;
            n/=10;  //我一开始写成了n=(int)(n/10);  Java的话不需要做这个转换
        }
        return ji-he;
    }
}

时间复杂度: O ( log ⁡ n ) O(\log n) O(logn)

空间复杂度: O ( 1 ) O(1) O(1)

参考ChatGPT的回答,解释一下时间复杂度:

这个函数的目的是计算给定数字 n n n 的各个数字的乘积与和的差值。在这个过程中,你会遍历整个数字的每一位。

时间复杂度是 O ( log ⁡ n ) O(\log n) O(logn) 的原因是你每次迭代都会通过 n = n / / 10 n = n // 10 n=n//10 将数字的位数减少一位。因此,你将执行与数字 n n n 的位数相同的迭代次数。

现在,让我们理解为什么数字 n n n 最多有 log ⁡ n \log n logn 位。

给定一个 k k k 位的数字 n n n,最大值为 1 0 k − 1 10^k-1 10k−1,最小值为 1 0 k − 1 10^{k-1} 10k−1:

1 0 k − 1 ≤ n < 1 0 k 10^{k-1} \leq n < 10^k 10k−1≤n<10k

取两边的对数,你得到:

k − 1 ≤ log ⁡ 10 n < k k-1 \leq \log_{10} n < k k−1≤log10n<k

所以 k k k就是数字 n n n 的位数,它的上界是 log ⁡ 10 n + 1 \log_{10} n+1 log10n+1。

因此,遍历数字 n n n 的每一位需要 O ( log ⁡ n ) O(\log n) O(logn) 的时间。

2. 其实也是遍历,但是用Python内置函数只用写一行

python 复制代码
class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        return eval('*'.join(str(n))) - eval('+'.join(str(n)))
相关推荐
m0_613856293 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
abcnull3 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡3 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
jegvom_6743 小时前
Python高级技巧
编程
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
昵称小白4 小时前
复杂度分析方法
算法
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
cvietx_9664 小时前
Go 模块依赖管理最佳方案
编程
juniperhan4 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
科研前沿4 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算