php小編百草在Golang中反轉數組而不改變負數位置是一個常見的問題。在處理陣列反轉時,通常會使用簡單直接的方法,即使用兩個指標分別指向陣列的頭部和尾部,然後交換它們的值,直到兩個指標相遇。但是,如果數組中存在負數,我們可能需要保持它們的位置不變。為了解決這個問題,我們可以使用兩個輔助數組,一個用於儲存正數,另一個用於儲存負數。然後,我們分別對這兩個陣列進行反轉操作,最後再將它們合併起來。這樣就可以實現在不改變負數位置的情況下反轉整個數組。這種方法簡單有效,可以在Golang中輕鬆實現。
我想反轉數組而不更改負數位置。下面是我嘗試過的程序,我在這裡缺少一些簡單的邏輯。任何幫助將不勝感激。
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) }
預期輸出:[5 3 2 -4 1 -6 -7]
我得到的輸出:[-6 5 3 -4 2 1 -7]
你已經非常接近了,你只需要在檢查數字是否為負的條件之後加入continue
。所以你的 swapContents1
函數會如下:
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-- } }
以上是在 Golang 中反轉數組而不改變負數位置的詳細內容。更多資訊請關注PHP中文網其他相關文章!