//Go funcexchange(nums []int) []int { //定义左指针left left := 0 //定义右指针right right := len(nums) - 1 //定义临时变量 tmp var tmp int //移动left 和 right,直到left在right右侧或者相遇为止 for left < right { //如果left指针指向的元素是奇数,那么说明元素在左侧了,观察其它元素,即让 left 向右移动 for left < right && (nums[left] & 1) == 1 { left++ } //如果right指针指向的元素是偶数,那么说明元素在右侧了,观察其它元素,即让 right 向左移动 for left < right && (nums[right] & 1) == 0 { right-- } //否则就说明,此时要么 left 指向的元素值为偶数,要么 right 指向的元素为奇数 //交换这两个位置的元素 tmp = nums[left] nums[left] = nums[right] nums[right] = tmp } return nums }
leetcode-cn执行:
1 2
执行用时:16 ms, 在所有 Go 提交中击败了88.81%的用户 内存消耗:6.4 MB, 在所有 Go 提交中击败了23.34%的用户