整数的各位积和之差
问题描述(来源于LeetCode)
给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
代码实现
1 | class Solution: |
题目理解
题目要求计算一个整数的各位数字之积与各位数字之和的差值。例如,对于整数 234:
-
各位数字之积:2 × 3 × 4 = 24
-
各位数字之和:2 + 3 + 4 = 9
-
差值:24 - 9 = 15
代码分析
算法思路
代码采用循环分解整数的方法:
-
初始化变量:
-
sums用于存储各位数字之和,初始化为 0 -
pro用于存储各位数字之积,初始化为 1
-
-
使用
while循环分解整数n:-
每次取
n的个位数(n % 10) -
将该数字加到
sums中 -
将该数字乘到
pro中 -
将
n除以 10(整数除法)以处理下一位
-
-
循环直到
n变为 0 -
返回
pro - sums
时间复杂度分析
-
时间复杂度:
-
循环次数等于数字
n的位数 -
对于十进制数,位数约为
-
-
空间复杂度:
- 只使用了常数级别的额外空间
代码正确性
代码逻辑正确,能够正确处理各种情况:
-
处理了正整数
-
正确处理了数字 0 的情况(当 n=0 时,循环不执行,返回 1-0=1,但实际应为 0;不过题目保证 n≥1)
-
注意:当 n=0 时,代码会返回 1,但题目约束 n≥1,所以没有问题
边界情况考虑
-
个位数:如 n=5,积为5,和为5,差为0
-
包含0的数字:如 n=102,积为0,和为3,差为-3
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!









