💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Ray.Dev2561
بهینه کردن کد two sum
جامعه گولنگ ایجاد شده در ۲۰ اردیبهشت ۱۴۰۲

با سلام و احترام و سپاس فراوان از استاد خوبمون و بقیه عوامل تیم سون لرن

در خصوص کم‌تر و بهینه شدن کد در انتها چون j = i +1 در حلقه دوم هست دیگر نیازی نیست شرط j != i بررسی شود و این قسمت شرط را حذف می‌کنیم

من دوباره کد را سابمیت کردم در leetcode اما ران تایم بیشتری از من گرفت از ۳۲ میلی ثانیه به ۳۶ میلی ثانیه رسید آیا نباید کمتر بشود یا اشتباه از برداشت من است

باز هم سپاس از استاد خوبمون

سلام دوست عزیز وقت بخیر

من کد رو بررسی کردم در واقع وقتی شما شرط رو برمیدارید ، باعث میشه که یکسری موارد بیشتری بررسی بشه توی ( یک سری test case‌ها )‌

و همین مورد باعث میشه ران تایم بیشتری از شما گرفته بشه

به این کد‌ها دقت کنید برای درک بهتر تفاوت‌های کوچک

func twoSum(nums []int, target int) []int {
checked := make(map[int]int)
	for index, num := range nums {
		if index2, ok := checked[target-num]; ok {
			return []int{index2, index}
		}
		checked[num] = index
	}
	return []int{}
}
## Runtime 9 ms - Memory 4.4 MB

func twoSum(nums []int, target int) []int {
checked := make(map[int]int)
	for index, num := range nums {
		complete := target - num # this line added and caused to decrease runtime for 1ms 
		if _, ok := checked[complete]; ok {
			return []int{checked[complete], index}
		}
		checked[num] = index
	}
	return []int{}
}
# Runtime 8 ms -  Memory 4.4 MB
func twoSum(nums []int, target int) []int {
  checked := map[int]int{} #  this line added and caused to increase runtime for 1ms (use [make])
	for index, num := range nums {
		if index2, ok := checked[target-num]; ok {
			return []int{index2, index}
		}
		checked[num] = index
	}
	return []int{}
} # Runtime9 ms - Memory4.3 MB
func twoSum(nums []int, target int) []int {
    for index, _ := range nums {
		for index2, _ := range nums {
			if index == index2 {
				continue
			}
			if nums[index]+nums[index2] == target {
				return []int{index, index2}
			}
		}
	}
	return []int{}
}
# Runtime 53 ms
# Memory 3.6 MB
func twoSum(nums []int, target int) []int {
  for index, item := range nums {
		complete := target - item # this line caused to decrease run time for approximately 15 ms
		for index2 := index + 1; index2 < len(nums); index2++ {
			if index != index2 && nums[index2] == complete {
				return []int{index, index2}
			}
		}
	}
	return []int{}
}
# Runtime 36 ms
# Memory 3.6 MB

موفق باشید ?

بهترین پاسخ
Reza Mobaraki ۲۱ اردیبهشت ۱۴۰۲، ۱۲:۲۳