éditeur php Baicao Inverser un tableau sans changer la position des nombres négatifs est un problème courant dans Golang. Lorsqu'il s'agit d'inversion de tableau, une méthode simple et directe est généralement utilisée, qui consiste à utiliser deux pointeurs pour pointer vers la tête et la queue du tableau, puis à échanger leurs valeurs jusqu'à ce que les deux pointeurs se rencontrent. Cependant, s’il y a des nombres négatifs dans le tableau, nous devrons peut-être conserver leurs positions inchangées. Pour résoudre ce problème, nous pouvons utiliser deux tableaux auxiliaires, un pour stocker les nombres positifs et un autre pour stocker les nombres négatifs. Ensuite, nous inversons les deux tableaux séparément et enfin les fusionnons. Cela vous permet d'inverser l'ensemble du tableau sans changer la position des nombres négatifs. Cette méthode est simple et efficace et peut être facilement implémentée dans Golang.
Je souhaite inverser le tableau sans changer les positions négatives. Vous trouverez ci-dessous le programme que j'ai essayé, il me manque ici une logique simple. Toute aide serait grandement appréciée.
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) }
Résultat attendu : [5 3 2 -4 1 -6 -7]
Le résultat que j'obtiens : [-6 5 3 -4 2 1 -7]
Vous êtes déjà très proche, il vous suffit d'ajouter continue
。所以你的 swapContents1
après la condition qui vérifie si le nombre est négatif ou non, la fonction le fera ressemble à ça :
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-- } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!