力扣经典题目之->移除值为val元素的讲解,的实现与讲解

一:题目

博主本文将用指向来形象的表示下标位的移动。 

二:思路

1:两个整形,一个start,一个end,在一开始都 = 0,即这里都指向第一个元素。

2:在查到val之前,查一个,end就赋给start一个,然后再双双+1,即指向下一个元素。

3:当end查到了val的时候,此时此刻,start和end都是指向val的,所以此时我们让start就不变了,让end去向后遍历,找到第一个不是val的值,从这个值开始,只要end指向的值不是val,就覆盖掉start指向的值。覆盖一次,双双向后移动一次,再次判断end然后去覆盖,直到end超出数组范围!

4:最后所有不是val的值都会被放在前面,然后返回start的值即可,他的值就是与val不同的元素的数量。

三:思路的讲解

1:假设数组是以下,val为2。

Q:我们用end去找的时候,为什么不是val,要将end赋给star,并且双双+1?

A1:双双+1是因为要确保end找到val的时候,此时此刻end和start都指向了该val

 A2:end赋给start,是因为在后面有重要作用,要用end指向的非val元素去覆盖start指向的val元素,并且这一步在找到val之前,对数组没有任何的影响

2:遇到val的时候

此时,strat指向val,不再移动,然后让end向后一直遍历,找到第一个不是val的值。用这个值去覆盖start指向的val

即:

3:覆盖完成后,双双向后移动,只要end指向的值不是val就去覆盖掉start

4:最后end会超出范围,即指向2后面的元素,这时候跳出循环

即:

5:此时start的值就是所有非val的元素的个数 

四:代码展示

总结:此题思路理解之后,书写极为简单!

相关推荐

  1. 经典面试题】27. 元素

    2024-07-14 00:28:01       60 阅读
  2. 经典150题第二题:元素

    2024-07-14 00:28:01       33 阅读
  3. 27. 元素(LeetCode) 】

    2024-07-14 00:28:01       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 00:28:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 00:28:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 00:28:01       58 阅读
  4. Python语言-面向对象

    2024-07-14 00:28:01       69 阅读

热门阅读

  1. compile gettext with vs

    2024-07-14 00:28:01       20 阅读
  2. 使机器人在执行任务倒快递

    2024-07-14 00:28:01       19 阅读
  3. 基于FPGA设计基础知识

    2024-07-14 00:28:01       21 阅读
  4. hot100

    2024-07-14 00:28:01       17 阅读
  5. Zookeeper

    2024-07-14 00:28:01       15 阅读