同程笔试题及详细答案.docxVIP

  • 1
  • 0
  • 约8.33千字
  • 约 10页
  • 2026-04-28 发布于河北
  • 举报

同程笔试题及详细答案

一、编程题(高频必考,2道,贴合同程笔试难度)

题1:移除数组中指定的元素(简单难度,同程秋招真题改编)

题目描述:给你一个整数数组和一个目标值,原地移除所有数值等于该目标值的元素,不使用额外的数组空间(仅使用O(1)额外空间),原地修改输入数组,并返回移除后数组的新长度。

输入描述:输入一个整数数组和一个需要移除的目标值(数组长度范围1-1000,数组元素为-1000~1000,目标值为数组中可能存在的元素)。

输出描述:返回移除指定元素后数组的新长度,无需输出修改后的数组(题目默认会校验数组修改的正确性)。

样例输入:nums=[3,2,2,3],val=3

样例输出:2

详细解析:

核心思路:用“快慢指针”实现原地操作,避免额外空间开销,这是同程笔试中最常考的数组操作技巧之一,重点考察对数组操作和指针逻辑的理解。

1.定义慢指针position,指向“下一个要存放非目标元素”的位置,初始值为0;

2.定义快指针iterator,遍历整个数组,初始值为0;

3.遍历过程中,若快指针指向的元素不等于目标值,就把该元素赋值给慢指针位置,然后慢指针后移1位;若等于目标值,快指针直接后移,慢指针不动;

4.遍历结束后,慢指针的数值就是非目标元素的个数,即新数组的长度。

代码实现(3种主流语言,贴合笔试书写习惯,无冗余代码):

Java版

文档评论(0)

1亿VIP精品文档

相关文档