当前位置: 首页 > news >正文

移除元素(简单)

解答:

方法一:双指针法

定义两个指针i和j,i指针用来遍历nums数组。j指针用来填充数组。

i指针肯定比j指针走的快或者走的速度一样。首先用i指针遍历数组,如果当前元素和val数值不一样,就把i位置的元素复制到j位置上,并且让j向后挪动一位。如当前元素和val数值一样,就不让j向后移动,保持在当前位置。

class Solution {public int removeElement(int[] nums, int val) {int j=0;for(int i=0;i<nums.length;i++){if(nums[i]!=val){nums[j]=nums[i];j++;}}return j;      }
}

方法二:双指针优化

使用两个左右指针,分别指向数组的开头和末尾。

判断当前左指针指向的元素,如果不等于val,左指针就向右移动,如果当前元素等于val,就把右指针位置的元素拿过来放在左指针的位置上。然后让右指针向左移动。

这里不用担心右指针指向的数值如果也是val怎么办,因为把右指针位置的数值拿过来之后,右指针向左移动的操作之后,就会进入下一个while循环,重新判断当前左指针的数字是不是val,如果还是(就是刚刚拿过来的右指针位置的数值还是val),就会把当前右指针的位置的数(右指针相比上次循环已经向左移动了,指向新的数值了)重新拿过来。

整个过程用while循环来做。

举了一个简单的例子:

class Solution {public int removeElement(int[] nums, int val) {int i=0;int j=nums.length-1;while(i<=j){if(nums[i]!=val){i++;}else{nums[i]=nums[j];j--;}}   return i;  }
}

相关文章:

  • 游戏引擎学习第246天:将 Worker 上下文移到主线程创建
  • C语言中结构体的字节对齐的应用
  • WPF与C++ 动态库交互
  • 【网络安全】用 Linux 命令行 CLI 日志文件处理指南
  • 在springboot项目中,如何进行excel表格的导入导出功能?
  • 从OpenAI收购实时数据引擎揭示AI数据库进化方向
  • django之优化分页功能(利用参数共存及封装来实现)
  • 【Linux】Centos7 安装 Docker 详细教程
  • 5.3/Q1,GBD数据库最新文章解读
  • MySQL多查询条件下深度分页性能优化技巧及示例总结
  • 【Castle-X机器人】一、模块安装与调试:机器人底盘
  • JavaScript 笔记 --- part6 --- JS进阶 (part1)
  • 高性能电脑系统优化工具Advanced SystemCare PRO v18.3.0.240 解锁永久专业版
  • 华为云loT物联网介绍与使用
  • 【Castle-X机器人】五、物联网模块配置与调试
  • 4.26学习——web刷题
  • Vue3中AbortController取消请求的用法详解
  • 模态链:利用视觉-语言模型从多模态人类视频中学习操作程序
  • 计算机网络 | Chapter1 计算机网络和因特网
  • 数据库系统概论(五)关系模型的数据结构及形式化
  • 中国海警局新闻发言人就菲律宾非法登临铁线礁发表谈话
  • 上海市市管干部任职前公示:赵亮拟为地区区长人选
  • 利用AI捏造“天价骨灰盒”谣言,内蒙古包头一网民被行政处罚
  • 泰山景区管委会:未经审核同意不得擅自举办竞速类登山活动
  • 这个器官健康的人,不容易得抑郁症
  • 一季度沪苏浙皖GDP增速均快于去年全年,新兴动能持续壮大