Tam bir Leetcode həllinin məhsulunu və rəqəmlərinin cəmini çıxartın

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Cisco google Über
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions RiyaziyyatBaxılıb 44

Problem bəyanat

Bu problemdə rəqəmlərin məhsulu ilə verilmiş rəqəmlərin cəmi arasındakı fərqi tapmaq lazımdır müsbət tam.

misal

1234
14

Izahat: Məhsul = 4 * 3 * 2 * 1 = 24 və Cəmi = 4 + 3 + 2 + 1 = 10. Beləliklə, fərq 14-dür

2045
-11

Izahat: Məhsul = 2 * 0 * 4 * 5 = 0 və Cəmi = 2 + 0 + 4 + 5 = 11. Beləliklə, fərq -11-dir.

Yanaşma

Rəqəmləri tam ədədən bir-bir çıxara bilsək, istənilən nəticəni qaytarmaq asan olur. Bunu '%' operatorundan istifadə etməklə asanlıqla etmək olar, çünki "% 10" bizə bir ədədin son rəqəmini gətirir, sonra son rəqəmi çıxarmaq üçün tam ədədi 10-a bölə bilərik (etdiyimiz kimi bu problem). Bu şəkildə hər rəqəmi işləyə və məhsulu və cəmi tapa bilərik. Sonra lazımi nəticəni əldə etmək üçün aralarındakı fərqi qaytara bilərik.

Tam bir Leetcode həllinin məhsulunu və rəqəmlərinin cəmini çıxartınPin

Alqoritm

  1. İki dəyişən başladın, məhsul = 1 və məbləğ Məhsulu və tam ədədin cəmini saxlamaq üçün = 0 N müvafiq
  2. Qədər bu addımları izləyin N> 0:
    1. N-in son rəqəmini vurun məhsul, məhsul * = N% 10
    2. N-in son rəqəmini əlavə edin məbləğ, cəmi + = N% 10
    3. bölmək N son rəqəmi 10-a endirmək üçün, N / = 10
  3. Qayıtmaq məhsul - cəmi

Tam bir Leetcode həllinin məhsulunu çıxarmaq və ədədi cəmi çıxarmaq

C ++ Proqramı

#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;
}

Java Proqramı

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

Bütünlük Leetcode həllinin məhsulunu çıxarmaq və ədədi cəminin karmaşıklığının təhlili

Zamanın mürəkkəbliyi

O (giriş2â € <N) tam bir N hər rəqəmi üçün döngə etdiyimiz kimi.

Kosmik Mürəkkəblik

O (1) daimi yaddaş məkanından istifadə etdiyimiz üçün.

Şərh yaz

Translate »
1