当前位置: 首页 > 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;  }
}

http://www.dtcms.com/a/157097.html

相关文章:

  • 游戏引擎学习第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 计算机网络和因特网
  • 数据库系统概论(五)关系模型的数据结构及形式化
  • 高中数学联赛模拟试题精选第19套几何题
  • Java数据结构——Stack
  • 机器学习(10)——神经网络
  • 代码随想录算法训练营第五十九天 | 1.ford算法精讲 卡码网94.城市间货物运输
  • 用python借用飞书机器人群发布定期内容
  • Eclipse 插件开发 3 菜单栏
  • 2025.04.26-饿了么春招笔试题-第一题
  • c++ package_task
  • 【Hive入门】Hive分桶表深度解析:从哈希分桶到Join优化的完整指南
  • Ubuntu编译opencv源码