欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-15 09:17:29
...


前言

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

27.移除元素

题目描述

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

做题思路

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

leetcode每日刷题之数组(四)27.移除元素(一个让你说卧槽的题解)
leetcode每日刷题之数组(四)27.移除元素(一个让你说卧槽的题解)
leetcode每日刷题之数组(四)27.移除元素(一个让你说卧槽的题解)
中间步骤省略直到最后

leetcode每日刷题之数组(四)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;
    }
}