حل سوال اول LeetCode

Mahdi Shamlou
Mahdi Shamlou
https://github.com/mahdi0shamlou/LeetCode


در این پست میخوام روش حل سوال اول leetcode رو به اشتراک بزارم
البته که باید بدونید شما هر سوال رو به هر روشی که به بشه اون سوال رو حل کرد میتونید حل کنید و فقط یک راه برای حل وجود نداره اما این راه حل من هست
امیدوارم ازش استفاده کنید و به دردتون بخوره

class Solution(object):
    def twoSum(self, nums, target):
        dict_key = {}
        for i in range(0, len(nums)):
            target_mines = target - nums[i]

            try:
                print(dict_key[str(target_mines)])
                print(i)
                return [dict_key[str(target_mines)], i]
            except:
                dict_key[str(nums[i])] = i

سوالی که مطرح شده این هست که در یک لیست که از اعداد پر شده چطور با داشتن یک عدد تحت عنوان تارگت بتوان دو عدد از لیست پیدا کرده که مجموع اون ها به تارگت برسه
حالا شما با چند روش میتونید این سوال رو حل کنید اما روشی که من پیاده سازی کردم این سوال رو با استفاده از یک دیکشنری حل میکنه که اردر زمانی اش بیشتر از n نباشه یعنی شما با یک بار چرخش در لیست به جواب سوال برسید
در مرحله اول یک حلقه برای چرخش در لیست نوشتم

      for i in range(0, len(nums)):

در مرحله بعدی هر استپ عدد انتخاب شده از لیست رو از تارگت کم میکنم

target_mines = target - nums[i]

در مرحله بعد با یک بلاک مدیریت خطا اگر بتونم اون عدد کم شده رو در دیکشنری پیدا کنم که به جواب مسيله رسیدم

   try:
                print(dict_key[str(target_mines)])
                print(i)
                return [dict_key[str(target_mines)], i]

اما اگر با خطا مواجه شد ( اونجایی با خطا مواجه میشه که اون عدد کم شده رو نتونه توی دیکشنری پیدا کنه )
یک کلید با با مقدار ایندکس عدد انتخاب شده در این مرحله توی دیکشنری میسازم
و این مراحل رو تا آخر لیست تکرار میکنم

 except:
                dict_key[str(nums[i])] = i

اگر سوالی دارید خوشحال میشم بپرسید که اگر بلد بودم بتونم کمکی کنم یا اگر به نظرتون راه حل بهتری برای حل این مسيله وجود داره خوشحال میشم داخل گیت هابم بهش اشاره کنید و کدم رو بهبود ببخشید