美文网首页
删除线性表中指定数据-使用数组实现

删除线性表中指定数据-使用数组实现

作者: 兔子是黑老大 | 来源:发表于2019-03-01 16:49 被阅读0次

tag 线性表 数组 删除指定数据

思想

  1. 假设:val为指定值
  2. 使first和second首先指向第一个元素
    1. 如果second != val,那么first和second同时前进,并且会进行赋值
    2. 如果second == val,那么second前进,而first则进行等待,直到找到一个second != val的位置再次执行1
    3. 重复1-2,直到second达到末尾
    4. first指向的位置就是删除指定元素之后的数组

代码

  public int removeElement(int[] nums, int val) {
        if(nums == null || nums.length == 0)
        return 0;
       int j = 0;
       //跳过相等的部分,不等的部分赋值
       for(int i = 0; i < nums.length;i++){
           if(nums[i] != val){
               nums[j] = nums[i];
               j++;
           }
       }
       return j;
    }

总结

  1. 特别注意的一点是nums[j] = nums[i];的赋值位置,这个for改成while可能更好理解
  2. 总体思想是跳过指定元素,和删除线性表中的重复数据-使用单链表实现的总体思想是一样的
  3. 注意一点和删除线性表中的重复数据-使用单链表实现的区别
    1. 为什么删除重复数据first和second指向的不是同一个位置?
      因为需要比较,而删除指定数据是不需要再从数组中拿出一个数据进行比较的
    2. 在删除指定数据和删除重复数据中first起什么作用?
      在删除重复数据中,first不仅担任着要记录需要返回的不重复数据的个数,而且还担任着比较的任务;但是在删除指定数据中,first纯粹只是个记录变量,只要second不等于val,就要被强制赋值

相关文章

  • 删除线性表中指定数据-使用数组实现

    tag 线性表 数组 删除指定数据 思想 假设:val为指定值 使first和second首先指向第一个元素如...

  • 数据结构基础

    线性表 线性表是按顺序存储数据时常用的一种数据结构。实现线性表的方式有两种: 数组 ArrayList 数组是大小...

  • js 数组操作合集(主要针对对象数组)

    1,根据对象中元素 查找对象数组中对应的元素 2,删除数组中指定对象的元素 并返回删除后的数组 3,js数组实现权...

  • 栈(顺序栈)

    栈:限定只能在表尾进行插入和删除的线性表。 顺序栈:使用数组实现的栈。 栈特性: 允许插入和删除的一端叫栈顶(to...

  • Laravel设置软删除及其恢复系列操作

    软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 数据迁移中软删除字段...

  • 《iOS面试题整理》- 数组

    数组定义 线性表结构, 用一组连续的内存空间存储具有相同类型的数据 如何实现随机访问 缺点 插入和删除操作低效, ...

  • 线性表

    学习内容来自数据结构详解——线性表(C++实现) 线性表(List):零个或多个数据元素的有限序列。顺序表(数组)...

  • 数组

    数组 数组如何实现随机访问 数组是一种线性数据结构,用连续的存储空间存储相同类型数据 线性表:数组、链表、队列、栈...

  • 数据结构与算法(五,栈和栈的应用,递归思想)

    栈 栈是只在尾部做添加和删除的线性表 栈的顺序结构方式 栈的顺序存储结构是使用数组实现的,Stack继承了Vect...

  • 数组

    数组如何实现随机访问 数组是一种线性数据结构,用连续的存储空间存储相同类型数据。 线性表:数组、链表、队列、栈 ;...

网友评论

      本文标题:删除线性表中指定数据-使用数组实现

      本文链接:https://www.haomeiwen.com/subject/xtoduqtx.html