image-20220319161918625.png

笨方法

笨方法直接俩for

  1. class Solution {
  2. public int removeElement(int[] nums, int val) {
  3. int size = nums.length;
  4. for (int i = 0; i < size; i++) {
  5. if (nums[i] == val) {
  6. for (int j = i + 1; j < size; j++) {
  7. nums[j - 1] = nums[j];
  8. }
  9. i--;
  10. size--;
  11. }
  12. }
  13. return size;
  14. }
  15. }

双指针

我的思路其实想到双指针了 但是因为固有思维加上心情不太好想先笨方法玩一下的…

类似反转那题

然后根据别人的博客我觉得叫快慢指针更好理解

  1. class Solution {
  2. public int removeElement(int[] nums, int val) {
  3. int slowIndex = 0;
  4. for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
  5. if (val != nums[fastIndex]) {
  6. nums[slowIndex++] = nums[fastIndex];
  7. }
  8. }
  9. return slowIndex;
  10. }
  11. }