Welcome to Subscribe On Youtube
1281. Subtract the Product and Sum of Digits of an Integer
Description
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
Solutions
Solution 1: Simulation
We use two variables $x$ and $y$ to record the product of the digits and the sum of the digits respectively. At the beginning, $x=1,y=0$.
When $n \gt 0$, each time we take the $mod$ of $n$ by $10$ to get the current digit $v$, and continue the next loop by dividing $n$ by $10$. In each loop, we update $x = x \times v$, $y = y + v$.
Finally, we return $x - y$.
The time complexity is $O(\log n)$, where $n$ is the given integer. The space complexity is $O(1)$.
-
class Solution { public int subtractProductAndSum(int n) { int x = 1, y = 0; for (; n > 0; n /= 10) { int v = n % 10; x *= v; y += v; } return x - y; } }
-
class Solution { public: int subtractProductAndSum(int n) { int x = 1, y = 0; for (; n; n /= 10) { int v = n % 10; x *= v; y += v; } return x - y; } };
-
class Solution: def subtractProductAndSum(self, n: int) -> int: x, y = 1, 0 while n: n, v = divmod(n, 10) x *= v y += v return x - y
-
func subtractProductAndSum(n int) int { x, y := 1, 0 for ; n > 0; n /= 10 { v := n % 10 x *= v y += v } return x - y }
-
function subtractProductAndSum(n: number): number { let [x, y] = [1, 0]; for (; n > 0; n = Math.floor(n / 10)) { const v = n % 10; x *= v; y += v; } return x - y; }
-
public class Solution { public int SubtractProductAndSum(int n) { int x = 1; int y = 0; for (; n > 0; n /= 10) { int v = n % 10; x *= v; y += v; } return x - y; } }
-
impl Solution { pub fn subtract_product_and_sum(mut n: i32) -> i32 { let mut x = 1; let mut y = 0; while n != 0 { let v = n % 10; n /= 10; x *= v; y += v; } x - y } }