הפחת את המוצר ואת סכום הספרות של פתרון Leetcode שלם


רמת קושי קַל
נשאל לעתים קרובות סיסקו Google סופר
מתמטיקה

הצהרת בעיה

בבעיה זו עלינו למצוא את ההבדל בין תוצר ספרות לבין סכום הספרות של נתון חיובי מספר שלם.

דוגמה

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 שלם

אַלגוֹרִיתְם

  1. אתחל שני משתנים, מוצר = 1 ו- סכום = 0 לאחסון המוצר וסכום הספרות של המספר השלם N בהתאמה
  2. בצע את השלבים הבאים עד N> 0:
    1. הכפל את הספרה האחרונה של N ל- מוצר, מוצר * = N% 10
    2. הוסף את הספרה האחרונה של N ל סכום, סכום + = N% 10
    3. לחלק את N ב -10 כדי להוריד את הספרה האחרונה, N / = 10
  3. לחזור מוצר - סכום

יישום הפחתת המוצר וסכום הספרות של פתרון קוד קוד שלם

תוכנית 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

ניתוח מורכבות של חיסור המוצר וסכום הספרות של פתרון קוד קוד שלם

מורכבות זמן

O (יומן2N) כאשר אנו לולאות לכל ספרה במספר שלם N.

מורכבות בחלל

O (1) כאשר אנו משתמשים במרחב זיכרון קבוע.