یک برنامه نویس عاشق ریاضیات که گه گاهی دستی بر قلم دارد
حل سوال اول 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اگر سوالی دارید خوشحال میشم بپرسید که اگر بلد بودم بتونم کمکی کنم یا اگر به نظرتون راه حل بهتری برای حل این مسيله وجود داره خوشحال میشم داخل گیت هابم بهش اشاره کنید و کدم رو بهبود ببخشید
مطلبی دیگر از این انتشارات
چگونه یک پیغام کامیت خوب بنویسیم؟
مطلبی دیگر از این انتشارات
لیست موتورهای جستجوگر(ی) "امنیت سایبری" 23
مطلبی دیگر از این انتشارات
آزمون تورینگ : آیا ماشین ها قادر به فکر کردن هستند ؟