📑 题目:27. 移除元素

🚀 本题 LeetCode 传送门

题目大意

给定一个数组 nums 和一个数值 val,将数组中所有等于 val 的元素删除,并返回剩余的元素个数。

解题思路

这道题和第 283 题很像。这道题和第 283 题基本一致,283 题是删除 0,这一题是给定的一个 val,实质是一样的。

这里数组的删除并不是真的删除,只是将删除的元素移动到数组后面的空间内,然后返回数组实际剩余的元素个数,OJ 最终判断题目的时候会读取数组剩余个数的元素进行输出。

代码

  1. package leetcode
  2. func removeElement(nums []int, val int) int {
  3. if len(nums) == 0 {
  4. return 0
  5. }
  6. j := 0
  7. for i := 0; i < len(nums); i++ {
  8. if nums[i] != val {
  9. if i != j {
  10. nums[i], nums[j] = nums[j], nums[i]
  11. }
  12. j++
  13. }
  14. }
  15. return j
  16. }