Heim >Backend-Entwicklung >Golang >Array in Golang umkehren, ohne negative Zahlenpositionen zu ändern

Array in Golang umkehren, ohne negative Zahlenpositionen zu ändern

WBOY
WBOYnach vorne
2024-02-08 21:51:19795Durchsuche

在 Golang 中反转数组而不改变负数位置

php-Editor Baicao Das Umkehren eines Arrays, ohne die Position negativer Zahlen zu ändern, ist ein häufiges Problem in Golang. Bei der Array-Umkehr wird normalerweise eine einfache und unkomplizierte Methode verwendet, bei der zwei Zeiger verwendet werden, um auf den Kopf und das Ende des Arrays zu zeigen, und dann ihre Werte ausgetauscht werden, bis sich die beiden Zeiger treffen. Wenn das Array jedoch negative Zahlen enthält, müssen wir ihre Positionen möglicherweise unverändert lassen. Um dieses Problem zu lösen, können wir zwei Hilfsarrays verwenden, eines zum Speichern positiver Zahlen und eines zum Speichern negativer Zahlen. Dann kehren wir die beiden Arrays separat um und führen sie schließlich zusammen. Dadurch können Sie das gesamte Array umkehren, ohne die Position der negativen Zahlen zu ändern. Diese Methode ist einfach und effektiv und kann problemlos in Golang implementiert werden.

Frageninhalt

Ich möchte die Anordnung umkehren, ohne die negativen Positionen zu ändern. Unten ist das Programm, das ich ausprobiert habe. Mir fehlt hier eine einfache Logik. Jede Hilfe wäre sehr dankbar.

package main
 import "fmt"
 func swapContents1(listObj []int) {
   i, j := 0, len(listObj)-1
    for i < j {
    if listObj[i] < 0 {
         i++
    }
    if listObj[j] < 0 {
        j--
    }
    listObj[i], listObj[j] = listObj[j], listObj[i]
    i++
    j--
   }
 }

func main() {

  listObj := []int{1, 2, 3, -4, 5, -6, -7}

  swapContents1(listObj)

  fmt.Println(listObj)
}

Erwartete Ausgabe: [5 3 2 -4 1 -6 -7]

Die Ausgabe, die ich erhalte: [-6 5 3 -4 2 1 -7]

Lösung

Sie sind schon ganz nah dran, Sie müssen nur noch die continue 。所以你的 swapContents1-Funktion nach der Bedingung hinzufügen, die prüft, ob die Zahl negativ ist oder nicht wird so aussehen:

func swapContents1(listObj []int) {
    i, j := 0, len(listObj)-1
    for i < j {
        if listObj[i] < 0 {
            i++
            continue
        }
        if listObj[j] < 0 {
            j--
            continue
        }
        listObj[i], listObj[j] = listObj[j], listObj[i]
        i++
        j--
    }
}

Das obige ist der detaillierte Inhalt vonArray in Golang umkehren, ohne negative Zahlenpositionen zu ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen