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
}