Skip to Content

Amaliyot

Nazariyani o’qib chiqish yetarli emas - algoritmlarni faqat masala yechib o’zlashtirasiz. Yaxshi xabar: buning uchun tekin, sifatli manbalar bor va Go ularda to’liq qo’llab-quvvatlanadi.

Qayerda mashq qilish

  • LeetCode  - eng katta masalalar bazasi. “Easy” dan boshlang, til sifatida Go ni tanlang.
  • NeetCode  - LeetCode masalalarini mavzu bo’yicha tartiblab, video yechimlar bilan beradi. Yangi boshlovchi uchun eng qulay yo’l xaritasi.
  • Exercism (Go track)  - mentorlar kod-revyu qiladi, Go idiomalariga o’rgatadi.
  • Project Euler  - matematik-algoritmik masalalar.

Maslahat: har kuni 1-2 masala, uzoq muddat. Bir kunda 20 ta yechishdan ko’ra, muntazamlik foydali.

Naqsh: two pointers

Ko’p masala “ikki ko’rsatkich” naqshi bilan yechiladi - massivni ikki tomondan siqib kelasiz. Tartiblangan slice da yig’indisi target bo’lgan juftlikni topaylik:

twosum.go
package main import "fmt" func twoSum(a []int, target int) (int, int) { lo, hi := 0, len(a)-1 for lo < hi { sum := a[lo] + a[hi] switch { case sum == target: return a[lo], a[hi] case sum < target: lo++ // kichik tomonni kattalashtiramiz default: hi-- // katta tomonni kichraytiramiz } } return -1, -1 } func main() { a := []int{1, 3, 4, 6, 8, 11} x, y := twoSum(a, 10) fmt.Println(x, "+", y, "=", 10) // 4 + 6 }
$ go run twosum.go 4 + 6 = 10

Naqsh: sliding window

Ketma-ket bo’lakni “oyna” kabi surib, qayta hisoblamasdan natijani yangilaysiz. k uzunlikdagi eng katta yig’indili bo’lakni topaylik:

window.go
package main import "fmt" func maxSubarraySum(a []int, k int) int { sum := 0 for i := 0; i < k; i++ { // birinchi oyna sum += a[i] } best := sum for i := k; i < len(a); i++ { sum += a[i] - a[i-k] // yangi kirdi, eski chiqdi best = max(best, sum) } return best } func main() { fmt.Println(maxSubarraySum([]int{2, 1, 5, 1, 3, 2}, 3)) // 9 (5+1+3) }
$ go run window.go 9

Har ikki naqsh O(n) - ichma-ich siklsiz. Ko’p LeetCode masalasi shu ikki g’oya atrofida aylanadi.

Xulosa: Muntazam mashq + naqshlarni tanish = algoritmik intervyu va real ish uchun tayyorlik.

Manba / batafsil: NeetCode Roadmap 

Last updated on