main.go 643 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //双指针法
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main() {
  7. fmt.Println("hello")
  8. nums := []int{3}
  9. fmt.Println(removeElement(nums, 3))
  10. }
  11. func removeElement(nums []int, val int) int {
  12. l := 0
  13. r := len(nums) - 1
  14. if r == -1 {
  15. return 0
  16. }
  17. for l != r {
  18. for nums[l] != val {
  19. if l == r {
  20. break
  21. }
  22. l++
  23. }
  24. for nums[r] == val {
  25. if l == r {
  26. break
  27. }
  28. r--
  29. }
  30. //这个时候,nums[l] =val && nums[r]!=val
  31. tmp := nums[l]
  32. nums[l] = nums[r]
  33. nums[r] = tmp
  34. fmt.Println(nums)
  35. }
  36. if nums[l] == val { //函数走到这里,l=r
  37. return l
  38. } else {
  39. return l + 1
  40. }
  41. }