1281. Subtract the Product and Sum of Digits of an Integer

1281. Subtract the Product and Sum of Digits of an Integer

一、題目

Given an integer number n, return the difference between the product of its digits and the sum of its digits.

 

Example 1:

Input: n = 234 Output: 15 Explanation: Product of digits = 2 * 3 * 4 = 24 Sum of digits = 2 + 3 + 4 = 9 Result = 24 - 9 = 15

Example 2:

Input: n = 4421 Output: 21 Explanation: Product of digits = 4 * 4 * 2 * 1 = 32 Sum of digits = 4 + 4 + 2 + 1 = 11 Result = 32 - 11 = 21

 

Constraints:

  • 1 <= n <= 10^5

 

二、程式作法

public class Solution
{
    public int SubtractProductAndSum(int n)
    {
        Queue<int> queue = new Queue<int>();

        while (n / 10 != 0)
        {
            queue.Enqueue(n % 10);
            n /= 10;
        }

        if (n != 0)
            queue.Enqueue(n);

        int p = 1, s = 0;

        while (queue.Count > 0)
        {
            int temp = queue.Dequeue();
            p *= temp;
            s += temp;
        }

        return p - s;
    }
}

 

public class Solution
{
    public int SubtractProductAndSum(int n)
    {
        int[] collection = new int[(int)Math.Log(n, 10) + 1];

        int idx = 0;
        while (n > 0)
        {
            collection[idx] = n % 10;
            idx++;
            n /= 10;
        }

        int p = 1;
        for (int i = 0; i < collection.Length; i++)
            p *= collection[i];

        int s = 0;
        for (int i = 0; i < collection.Length; i++)
            s += collection[i];

        return p - s;
    }
}

 

三、思路筆記

兩種作法,一種用 Queue 來分出每一個數字;

另一種是取 log 來分出每一種數字。