最近太难啦!不仅天气炎热空调坏了,而且无论是全职FT岗位还是NG intern岗位都迟迟没有开放,导致我们业务不佳。不过经过我们CSOahelp仔细搜索,发现了point72开了一个SDE的岗位,虽然很快就关闭了。但是我们的学员还是抓住机会申请进入了面试,这次给大家分享一下真题,大家在没有面试的暑期也要努力刷题备战2025秋招哦。
最近在Point72 2025年6月份新开的SDE面试环节里,我们发现了如下的题目。
题目:给定一个整型数组,需要在不额外申请空间的情况下,将所有零都移除,并且保持非零元素的相对顺序。函数签名大致是:
def remove_zeros_inplace(array: List[int]) -> None:
"""
Removes zeros from array.
Saves ordering of non-zero elements.
Use O(N) time complexity.
Uses O(1) additional memory complexity (works inplace).
"""
解法其实很直接:
用“快慢指针”在一次遍历中完成。
定义 slow=0
,然后让 fast
从头到尾走一遍,每当 array[fast] != 0
时,就把 array[fast]
写入 array[slow]
,并把 slow
自增。
循环结束后,slow
之前都是非零元素,再把 slow
到末尾的所有位置填成 0 即可。整个过程只遍历了一次数组,时间复杂度 O(N),只用了常数级额外空间。
def remove_zeros_inplace(array: List[int]) -> None:
slow = 0
for fast in range(len(array)):
if array[fast] != 0:
array[slow] = array[fast]
slow += 1
while slow < len(array):
array[slow] = 0
slow += 1
面试官针对时间、空间复杂度以及“如何避免多余写入”三次追问,经过我们CSOahelp面试辅助他都能一一作答,最终顺利通过了这一轮考察,为了后续拿到offer奠定了基础。
如果你也在准备Point72、Meta、TikTok等大厂的算法与系统设计面试,却不清楚如何拆题和应对各种边界,欢迎添加微信 csvohelp,即可领取北美面试求职通关秘诀。我们也有代面试,面试辅助,OA代写等服务助您早日上岸~
