Menu
CoddyTech

Target Sum

נתון לך מערך nums של מספרים שלמים אי־שליליים ומספר שלם target. הצב סימן פלוס או מינוס לפני כל מספר, שמור על הסדר שלהם וחשב את ערך הביטוי. החזר כמה בחירות של סימנים הופכות את הביטוי לשווה ל־target. כל אחת מ־2^n הבחירות נספרת בפני עצמה, כך ש־+0 ו־-0 הן שתי בחירות שונות.

פונקציה

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
המספרים, שכל אחד מהם מקבל סימן
targetinteger
הערך שהביטוי חייב להיות שווה לו
מחזירהinteger
מספר אפשרויות הסימן שהביטוי שלהן שווה למטרה

אילוצים

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • הסכום של nums הוא לכל היותר 1000.
  • -1000 ≤ target ≤ 1000
  • התשובה היא לכל היותר 220, ונמצאת הרבה בתוך הטווח של מספר שלם חתום בן 32 סיביות.

דוגמאות

קלט
nums = [2, 1, 1]target = 2
פלט
2
הסבר
+2 +1 -1 וגם +2 -1 +1 שווים שניהם ל-2. עם מינוס על ה-2, הערך הגבוה ביותר שאפשר להגיע אליו הוא ‎-2 + 1 + 1 = 0, ולכן שום אפשרות אחרת לא מתאימה.
challenge icon

שאלת המשך

האם תוכל לטפל בעד 40 מספרים, שערכיהם עד 10^9, כשמערך שמאונדקס לפי הסכום לא יכול להיכנס לזיכרון?

איפוס הקוד
def findTargetSumWays(nums, target):
    # כתבו כאן קוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

nums = [2, 1, 1]
target = 2

הפלט הצפוי

2