Masalalar
Go Algoritm masala

Eng yaxshi o‘rindiq

10 August, 2026
Go
package main

func (_ Solution) BestSeat(seats []int) int {
	var maxSegment int
	var currentSegmentLength int
	var bigIndex int
  var segmentStart int 
	
  for i := 1; i < len(seats); i++ {
		if seats[i] != 1 {
      if currentSegmentLength == 0  {
        segmentStart = i
      }
			currentSegmentLength++
		} else {
			if currentSegmentLength > maxSegment {
        maxSegment = currentSegmentLength
        bigIndex = segmentStart + (currentSegmentLength-1)/2
      }

			currentSegmentLength = 0
		}
	}

	if maxSegment == 0 {
		return -1
	}

	return bigIndex 
}

Buyerda biz massiv qabul qilib olamiz, o'rindiqlar uchun va ular 1-orin bor, 0-orin yoq deydi bizga.

boshi bilan oxirini olib xar doim band deypti bu degani for sikl 1 dan boshlanadi

segment - 0,1,0,0,0,0,1,1,0,0 manashuyerda 2 ta bor buyerda segment deganda ketma ket kelagn juftliklar soni


for aylantirmaiz va 1 chiqqanicha sanaymiz va sanoqdan 1 chiqqanida toxtaymiz. Toxtadik va 1 chiqdi keyin sanoqni yana 0 ga tushiramiz shunda segmentlarni nechtaligni bila olamiz nechtadan ekanligni