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

Array in Golang umkehren, ohne negative Zahlenpositionen zu ändern

WBOY
Freigeben: 2024-02-08 21:51:19
nach vorne
792 Leute haben es durchsucht

在 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)
}
Nach dem Login kopieren

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--
    }
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage