152 / 205
LeetCode · MediumO'rta20 ball· ~15 daqiqa

Two Sum II - Input Array Is Sorted

Sizga o'sish tartibida joylashgan (tartiblangan) butun sonlardan iborat numbers massivi berilgan. Ushbu massivda yig'indisi target ga teng bo'lgan ikkita sonni toping va ularning 1 dan boshlanadigan (1-indexed) indekslarini qaytaring — ya'ni [index1, index2] ko'rinishida, bunda index1 < index2.

Siz massiv xotirasidan tashqarida O(1) qo'shimcha xotiradan foydalaningsingiz kerak (ya'ni O(n) xotira imkoni yo'q).

example.go
func solve(numbers []int, target int) []int {
    // ...
}

Misollar

kod
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Tushuntirish: 2 + 7 = 9. Ularning indekslari 1 va 2 (1-indexed).
kod
Input: numbers = [2,3,4], target = 6
Output: [1, 3]
kod
Input: numbers = [-1,0], target = -1
Output: [1, 2]

Maslahatlar

  1. Massiv allaqachon saralangan bo'lgani uchun har bir juftlikni tekshirish shart emas — ikki ko'rsatkichni massivning ikki chetidan boshlab, yig'indiga qarab ularni ichkariga siljitishni o'ylab ko'ring.
  2. l=0 va r=len(numbers)-1 dan boshlang; agar numbers[l]+numbers[r] target dan kichik bo'lsa l++, katta bo'lsa r--, teng bo'lsa 1-indexed [l+1, r+1] ni qaytaring — massiv saralangan bo'lgani uchun bu yondashuv hech qanday to'g'ri javobni o'tkazib yubormaydi.