同程笔试 同程秋招 同程笔试题 0925
笔试时间:2025年5月4日
往年笔试合集:
第一题:移除数组中指定的元素
题目描述: 给你一个数组和一个值,原地移除所有数值等于该值的元素,并返回移除后数组的新长度。要求不使用额外的数组空间,必须仅使用 O(1) 额外空间并原地修改输入数组。
输入描述
一个整数数组和一个需要移除的目标值
输出描述
移除指定元素后数组的新长度
样例输入
nums = [3,2,2,3], val = 3
样例输出
2
参考题解
解题思路:使用"快慢指针"的思想来解决问题:
- 设置一个慢指针 position,它指向下一个应该存放非目标元素的位置
- 设置一个快指针 iterator,它负责遍历整个数组
- 当快指针指向的元素不是要移除的值时,就将该元素复制到慢指针所在的位置,然后慢指针向后移动一位
- 如果快指针指向的元素是要移除的值,则快指针继续向后移动,而慢指针保持不动
- 遍历结束后,慢指针 position 的值就是数组中非目标元素的数量
C++:
class Solution {
public:
int removeElement(vector<int>& data, int valueToRemove) {
int position = 0;
for (int iterator = 0; iterator < data.size(); iterator++) {
if (data[iterator] != valueToRemove) {
data[position] = data[iterator];
position++;
}
}
return position;
}
};
Java:
class Solution {
public int removeElement(int[] data, int valueToRemove) {
int position = 0;
for (int iterator = 0; iterator < data.length; iterator++) {
if (data[iterator] != valueToRemove) {
data[position] = data[iterator];
position++;
}
}
return position;
}
}
Python:
class Solution:
def removeElement(self, data: List[int], valueToRemove: int) -> int:
position = 0
for iterator in range(len(data)):
if data[iterator] != valueToRemove:
data[position] = data[iterator]
position += 1
return position
第二题:删除子文件夹
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2025 春招笔试合集 文章被收录于专栏
2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南
查看7道真题和解析