funcapplyOperations(nums []int) []int { var res []int res = make([]int, len(nums)) index := 0 // 第一次遍历 进行赋值操作 for i := 0; i < len(nums)-1; i++ { if nums[i] == nums[i+1] { nums[i] *= 2 nums[i+1] = 0 } } // 第二次遍历 将非0移动到前边 for i := 0; i < len(nums); i++ { if nums[i] != 0 { res[index] = nums[i] index++ } } return res }
第二版 时间复杂度:O(n) 空间复杂度:O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
funcapplyOperations(nums []int) []int { n := len(nums) j := 0 for i := 0; i < n; i++ { if i+1 < n && nums[i] == nums[i+1] { nums[i] *= 2 nums[i + 1] = 0 } if nums[i] != 0 { nums[i], nums[j] = nums[j], nums[i] j++ } } return nums }