同程笔试 同程秋招 同程笔试题 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等多种语言做法集合指南