107 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Container with most water

Uzunligi n bo'lgan massiv height berilgan. Undagi elementlar vertikal chiziqlar balandligini bildiradi. Qaysi ikkita chiziq eng ko'p suvni sig'dira olishini hisoblang va o'sha hajmni qaytaring.

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

Misollar

kod
Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
kod
Input: height = [1,1]
Output: 1
kod
Input: height = [4,3,2,1,4]
Output: 16

Maslahatlar

  1. Barcha juftliklarni tekshirish shart emas — ikkita ko'rsatkichni massivning ikki chetidan boshlab, ularni asta-sekin ichkariga siljitish g'oyasini (two pointers) ko'rib chiqing.
  2. l=0 va r=n-1 dan boshlang, har qadamda joriy maydonni (past chiziq balandligi × masofa) hisoblab eng yaxshisini yangilang, so'ng har doim ikkita chiziqdan pastrog'iga qarab tegishli ko'rsatkichni ichkariga suring — chunki balandroq chiziqni harakatlantirish natijani hech qachon yaxshilamaydi.