1281. 整数的各位积和之差
题目描述
给你一个整数 n
,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
示例 1:
输入:n = 234 输出:15 解释: 各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15
示例 2:
输入:n = 4421 输出:21 解释: 各位数之积 = 4 * 4 * 2 * 1 = 32 各位数之和 = 4 + 4 + 2 + 1 = 11 结果 = 32 - 11 = 21
提示:
1 <= n <= 10^5
解法
方法一:模拟
我们用两个变量 \(x\) 和 \(y\) 分别记录各位数之积、各位数之和,初始时 \(x=1,y=0\)。
当 \(n \gt 0\) 时,每次将 \(n\) 对 \(10\) 取模得到当前位的数字 \(v\),并将 \(n\) 除以 \(10\) 后继续进行下一次循环。在每次循环中,我们更新 \(x = x \times v\), \(y = y + v\)。
最终,我们返回 \(x - y\) 即可。
时间复杂度 \(O(\log n)\),其中 \(n\) 是题目给定的整数。空间复杂度 \(O(1)\)。
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 |
|