정수 Leetcode 솔루션의 곱과 자릿수 합계 빼기


난이도 쉽게
자주 묻는 질문 시스코 구글 동네 짱
수학

문제 정책

이 문제에서 우리는 자릿수의 곱과 주어진 자릿수의 합 사이의 차이를 찾아야합니다. 긍정적인 정수.

1234
14

설명: Product = 4 * 3 * 2 * 1 = 24 및 Sum = 4 + 3 + 2 + 1 = 10. 따라서 차이는 14입니다.

2045
-11

설명: Product = 2 * 0 * 4 * 5 = 0 및 Sum = 2 + 0 + 4 + 5 = 11. 따라서 차이는 -11입니다.

접근

정수에서 숫자를 하나씩 추출 할 수 있다면 원하는 출력을 쉽게 반환 할 수 있습니다. ”% 10”은 정수의 마지막 숫자를 가져 오므로 이는 '%'연산자를 사용하여 쉽게 수행 할 수 있습니다. 그런 다음 정수를 10으로 나누어 마지막 숫자를 빼낼 수 있습니다. 문제). 이런 식으로 각 숫자를 처리하고 제품과 합계를 찾을 수 있습니다. 그런 다음 필요한 결과를 얻기 위해 둘 사이의 차이를 반환 할 수 있습니다.

정수 Leetcode 솔루션의 곱과 자릿수 합계 빼기

암호알고리즘

  1. 두 변수를 초기화합니다. 제품 = 1 및 = 0은 제품과 정수 자릿수 합계를 저장합니다. N 각기
  2. 다음 단계를 따르십시오. N> 0:
    1. N의 마지막 숫자를 곱하여 제품, 제품 * = N % 10
    2. N의 마지막 숫자를 , 합계 + = N % 10
    3. 분할 N 마지막 숫자를 삭제하려면 10 씩, N / = 10
  3. 반환 제품 – 합계

정수 Leetcode 솔루션의 곱 및 자릿수 빼기 구현

C ++ 프로그램

#include <bits/stdc++.h>
using namespace std;

int subtractProductAndSum(int n)
{
    int product = 1 , sum = 0;
    while(n > 0)
    {
        //n % 10 extracts the last digit out of N
        product *= (n % 10);
        sum += (n % 10);
        n /= 10;
    }
    return product - sum;
}

int main()
{
    int n = 1234;
    cout << subtractProductAndSum(n) << '\n';
    return 0;
}

자바 프로그램

class subtract_product_and_sum
{
    public static void main(String args[])
    {
        int n = 1234;
        System.out.println(subtractProductAndSum(n));
    }

    static int subtractProductAndSum(int n)
    {
        int product = 1 , sum = 0;
        while(n > 0)
        {
            //n % 10 extracts the last digit out of N
            product *= (n % 10);
            sum += (n % 10);
            n /= 10;
        }
        return product - sum;
    }
}
14

정수 Leetcode 솔루션의 곱과 자릿수 합계의 복잡성 분석

시간 복잡성

O (로그2â € <N) 정수 N의 모든 숫자를 반복합니다.

공간 복잡성

O (1) 일정한 메모리 공간을 사용하므로