leetcode每日刷题之数组(四)27.移除元素(一个让你说卧槽的题解)


前言

这个题目给我第一想法就是用双指针,这个 思路也是在纸上画的时候突然想到的,感觉还不错,分享给大家。提前两天完成了这个月的目标,开心。

27.移除元素

题目描述

在这里插入图片描述

做题思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
中间步骤省略直到最后

在这里插入图片描述
思路就是,遍历数组,两个指针一起移动,当发现需要删除的值时,绿指针移动,红指针不动,然后然后再一起移动直到最后。

题目代码

class Solution {
    
    
      public int removeElement(int[] nums, int val) {
    
    
        if (nums == null) {
    
    
            return 0;
        }
        //定义接收值的索引
        int j = 0;
        //遍历执行
        for (int i = 0; i < nums.length; i++) {
    
    
        //不是要删除的值时,数组不发生改变
            if (nums[i] != val) {
    
    
                nums[j] = nums[i];
                j++;
            }
        //找到需要删除的值时,i移动,j不动,就实现了删除
        //继续往下执行,找到不需要删除的值,j继续向前移动          
        }
        return j;
    }
}

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108854729