1281. 整数的各位积和之差

难度: 简单
来源: 每日一题 2023.08.09

给你一个整数 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
class Solution {
    public int subtractProductAndSum(int n) {

    }
}

分析与题解


  • 重拳出击👊🏻 + 模拟法

    简单题我直接就是重拳出击, 直接使用模拟法, 也不需要转成字符串, 因为造成额外的空间浪费, 直接循环取余,完成整个题目的题解.

    整个题目的题解过程如下所示.

    class Solution {
        public int subtractProductAndSum(int n) {
            int sum = 0;
            int product = -999;
            while (n > 0) {
                sum += n%10;
                if (product == -999) {
                    product = n%10;
                } else {
                    product = product * (n%10);
                }
                n = n/10;
            }
            return product - sum;
        }
    }
    

    复杂度分析:

    • 时间复杂度: O(n), 一次遍历循环, 时间复杂度与数字的位数长度相关.
    • 空间复杂度: O(1), 常量级别的空间复杂度.

    结果如下所示.


IT界无底坑洞栋主 欢迎加Q骚扰:676758285