119 / 205
LeetCode · MediumO'rta20 ball· ~20 daqiqa

Jump Game

Sizga butun sonlardan iborat nums massivi berilgan. Siz dastlab massivning birinchi indeksida joylashgansiz va har bir element sizning o'sha joydan maksimal qancha sakrashingiz mumkinligini bildiradi.

Agar oxirgi indeksga yetib bora olsangiz true qaytaring, aks holda false.

example.go
func solve(nums []int) bool {
    // ...
}

Misollar

kod
Input: nums = [2,3,1,1,4]
Output: true
Tushuntirish: 0-indeksdan 1 qadam sakrab 1-indeksga o'tamiz, u yerdan esa 3 qadam sakrab oxirgi indeksga yetib boramiz.
kod
Input: nums = [3,2,1,0,4]
Output: false
kod
Input: nums = [0]
Output: true

Maslahatlar

  1. Har bir sakrash yo'lini alohida sinab ko'rish shart emas — har bir pozitsiyada "shu yergacha yetib borib, keyin qay yergacha uzoqlasha olishimiz mumkin" degan greedy (ochko'z) fikrlashni qo'llang.
  2. "Hozirgacha yeta oladigan eng uzoq indeks" (maxReach) degan o'zgaruvchini saqlab, massiv bo'ylab yuring: agar joriy indeks maxReach dan katta bo'lib qolsa, demak bu yerga yetib bo'lmaydi — false qaytaring; aks holda maxReach ni i + nums[i] bilan yangilab boring va oxirigacha yetib borsangiz true qaytaring.