차례
문제 정책
이 문제에서 우리는 자릿수의 곱과 주어진 자릿수의 합 사이의 차이를 찾아야합니다. 긍정적인 정수.
예
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으로 나누어 마지막 숫자를 빼낼 수 있습니다. 이 문제). 이런 식으로 각 숫자를 처리하고 제품과 합계를 찾을 수 있습니다. 그런 다음 필요한 결과를 얻기 위해 둘 사이의 차이를 반환 할 수 있습니다.
암호알고리즘
- 두 변수를 초기화합니다. 제품 = 1 및 합 = 0은 제품과 정수 자릿수 합계를 저장합니다. N 각기
- 다음 단계를 따르십시오. N> 0:
- N의 마지막 숫자를 곱하여 제품, 제품 * = N % 10
- N의 마지막 숫자를 합, 합계 + = N % 10
- 분할 N 마지막 숫자를 삭제하려면 10 씩, N / = 10
- 반품 제품 – 합계
정수 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) 일정한 메모리 공간을 사용하므로