Бүтүн Leetcode эритмесинин көбөйтүмүн жана сандарынын суммасын чыгарыңыз  


Кыйынчылык деңгээли жеңил
Көп суралган Cisco Гугл Uber
Алгоритмы коддоо интервью интервью даярдоо LeetCode LeetCodeSolutions Math

Маселени билдирүү  

Бул маселеде цифралардын көбөйтүмү менен берилген цифралардын суммасынын айырмасын табышыбыз керек оң бүтүн.

мисал

1234
14

түшүндүрүү: Продукт = 4 * 3 * 2 * 1 = 24 жана суммасы = 4 + 3 + 2 + 1 = 10. Демек, айырма 14

2045
-11

түшүндүрүү: Продукт = 2 * 0 * 4 * 5 = 0 жана суммасы = 2 + 0 + 4 + 5 = 11. Демек, айырма -11.

жакындоо  

Эгерде бүтүн сандан цифраларды бир-бир бөлүп алсак, керектүү натыйжаны кайтарып берүү оңой болуп калат. Муну '%' операторун колдонуу менен оңой эле бүтүрсө болот, анткени "% 10" бүтүн сандын акыркы цифрасын алып келет, ошондо бүтүндөй сандын 10ун бөлүп, андан акыркы цифраны чыгарып алабыз (биз кылган сыяктуу эле) бул көйгөй). Ошентип, биз ар бир цифраны иштеп чыгып, көбөйтүндүсүн жана суммасын таба алабыз. Андан кийин, биз талап кылынган натыйжаны алуу үчүн, алардын ортосундагы айырманы кайтарып бере алат.

Бүтүн Leetcode эритмесинин көбөйтүмүн жана сандарынын суммасын чыгарыңызтөөнөч

Algorithm

  1. Эки өзгөрмө инициализациялоо, продукт = 1 жана сумма Бүтүндүктүн сандарынын кошундусун жана суммасын сактоо үчүн = 0 N жараша
  2. Чейин ушул кадамдарды аткарыңыз N> 0:
    1. Nдин акыркы цифрасын көбөйт продукт, продукт * = N% 10
    2. Nдин акыркы санын кошуңуз сумма, суммасы + = N% 10
    3. бөлүнүү N акыркы цифраны түшүрүү үчүн 10, N / = 10
  3. Return продукт - сумма

Бүтүн 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;
}

Java программасы

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 (журн2N) бүт N сандын ар бир цифрасы үчүн цикл катары.

ошондой эле
Leetcode Solution кадамы менен позитивдүү кадам жасоонун минималдуу мааниси

Космостун татаалдыгы

O (1) биз туруктуу эс мейкиндигин колдонуп жатканда.