Sobes.tech
Middle

Опишете подхода за съхраняване на позицията на последната единица при решаването на задачата за максимално разстояние

sobes.tech AI

Отговор от AI

Подходът за запазване на позицията на последната единица при решаване на задачата за максимално разстояние (например, максималното разстояние между единици в масив) е следният:

  • Обхождаме масива, следейки индекса на последната срещната единица.
  • При среща на нова единица изчисляваме разстоянието до последната запазена позиция на тази единица.
  • Актуализираме максималното разстояние, ако текущото е по-голямо.
  • Актуализираме позицията на последната единица на текущия индекс.

Това позволява за един преминаване да се намери максималното разстояние между единици без необходимостта да се съхраняват всички позиции.

Пример на Go:

func maxDistance(arr []int) int {
    lastPos := -1
    maxDist := 0
    for i, val := range arr {
        if val == 1 {
            if lastPos != -1 {
                dist := i - lastPos
                if dist > maxDist {
                    maxDist = dist
                }
            }
            lastPos = i
        }
    }
    return maxDist
}