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 來分出每一種數字。