funcmoveZeroes(nums []int) { slow, n := 0, len(nums) for fast := 0; fast < n; fast++ { // 注意第一个是0的时候需要比较 if nums[fast] != 0 { // 不是零的时候,才会交换,如果第一个是0,则fast 是会向后移动的,这样就会交换数值,保证的是slow是指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。 nums[slow], nums[fast] = nums[fast], nums[slow] slow++ } } }
思路:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
funcmaxArea(height []int)int { ans := 0 for i := 0; i < len(height); i++ { for j := i + 1; j < len(height); j++ { area := (j - i) * min(height[i], height[j]) ans = max(area,ans) } } return ans }
funcmin(a, b int)int { if a > b { return b }; return a } funcmax(a, b int)int { if a < b { return b }; return a }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
funcmaxArea(height []int) (ans int) { left, right := 0, len(height)-1// 初始化两边指针 for left < right { area := (right - left) * min(height[left], height[right]) // 计算面积 ans = max(ans, area) // 计算最大值 if height[left] < height[right] { left++ // 移动短的那个 } else { right-- } } return }
funcmin(a, b int)int { if a > b { return b }; return a } funcmax(a, b int)int { if a < b { return b }; return a }