جمع دو عدد

Two Sum
Two Sum

سلام

بریم یک مثال باحال حل کنیم

باید یک تابع بنویسیم که ۲ تا ورودی میگیره یکی از نوع آرایه - اعداد ( nums ) و یکی از نوع عدد صحیح - هدف ( target ).

تا اینجا اوکی ولی کار تابع چیه؟

این تابع باید ۲ تا عدد در خروجی بصورت لیست بفرسته که در اصل این دو عدد آدرس ۲ عددی در لیست ورودی تابع هست که مجموع آنها برابر با target ه.

  • توجه کنید که ممکنه اعداد تکراری در آرایه باشه و نباید از یک عدد دو بار استفاده بشود.
  • جواب رو می توانیم به هر ترتیبی برگردانیم.

مثال ۱ :

123ورودی : nums = [2,7,11,15], target = 9
خروجی : [0,1]
توضیح :  nums[0] + nums[1] == 9

مثال ۲ :

12ورودی : nums = [3,2,4], target = 6
خروجی : [1,2]

مثال :

12ورودی : nums = [3,3], target = 6
خروجی : [0,1]

برای حلش، می‌توانیم از یک دیکشنری استفاده کنیم که شماره هر عنصر را به عنوان کلید و مقدار آن را به عنوان مکان آن در آرایه ذخیره کند.

سپس در یک حلقه، هر عنصر را از آرایه بخواند و مقدار target را ازش کم و در متغیر complement ذخیره کند.

سپس مقدار complement را به عنوان کلید در دیکشنری جستجو کند. اگر پیدا شد، برای یافتن مکان هر عنصر، مقدار مکانیشون را از دیکشنری بخواند و به عنوان جواب برگرداند.

12345678910111213def twoSum(nums, target):
     # Create a dictionary to store the index of each number in nums    
     num_dict = {}      

     # Loop through each number in nums 
     for i, num in enumerate(nums):         
     # Check if the complement of the current number exists in num_dict        
     complement = target - num         
     if complement in num_dict:             
         # If it does, return the indices of the two numbers 
         return [num_dict[complement], i]         
     # If it doesn't, add the current number and its index to num_dict        
     num_dict[num] = i

منبع سوال

لایک یادت نره.

شاد و موفق باشی!