2025/3 tiktok面经 | tiktok真题解析 | tiktok面试 | tiktok一亩三分地

tiktok面经

2025.3月最新tiktok面经,让我们一起来看下吧~

Tiktok三轮第一轮第二轮都是coding,每轮两道题。BQ是讲一个项目,followup项目中遇到的困难。HM面试简历+coding。简历问的infra,coding是dp。

Code

问题1

在允许最多修改数组的一个元素的条件下,这个数组是否是有序的。
考虑从前往后遍历数组,将遇到不满足有序条件的元素nums[i],即nums[i] < nums[i-1],若i为size-1即最后一个元素,或者数组已经全部有序,直接返回true,否则应考虑nums[i+1]的大小:

  • 若nums[i+1] >= nums[i-1],如数组0,1,2,【1】,3… 中 3 > 2,此时i+1及之前的元素满足题意条件,若后面是有序的则返回true;
  • 否则,如数组0,1,4,【1】,3…中 3 < 4,则若将nums[i-1]改成nums[i],再从i-2开始遍历数组判断其是否有序的即可。

时间复杂度O(n), 空间复杂度O(1)

思路

  1. 遍历数组,找到第一个违反非递减顺序的位置i(即nums[i] < nums[i-1])。
  2. 如果i已经遍历到数组的末尾或倒数第二个元素,说明最多只有一个元素违反顺序,可以通过修改这个元素来修复,直接返回true
  3. 检查是否可以通过修改nums[i-1]nums[i]来修复数组。
  4. 从位置i开始,继续向后遍历数组,检查是否所有元素都满足非递减顺序。如果发现任何违反顺序的元素,则返回false
  5. 如果整个数组都满足非递减顺序,则返回true
class Solution:
    def checkPossibility(self, nums):
        i = 0
        for i in range(1, len(nums)):
            if nums[i] = len(nums) - 1:
            return True

        if nums[i + 1] >= nums[i - 1]:
            i += 1
        else:
            nums[i - 1] = nums[i]
            i = max(0, i-2)

        for i in range(i, len(nums) - 1):
            if nums[i] > nums[i + 1]:
                return False
        return True

问题2

找到树中到其他节点的平均距离最小的节点,一个edge距离算1,要求时间复杂度为O(n)。 参考

思路

  1. 首先,定义一个标志变量visited,用来标记是否已经找到目标节点p,初始值为false
  2. 定义一个空栈stack,用来存储从根节点到目标节点p的路径上的节点值。
  3. 定义一个函数getDisToPar,接收三个参数:当前节点root、目标节点p和用于存储路径的栈stack
  4. getDisToPar函数中,首先检查当前节点是否为空,如果为空,则直接返回。
  5. 将当前节点的值添加到栈中。
  6. 如果当前节点就是目标节点p,并且之前没有访问过(visitedfalse),则将visited标记为true,并返回。
  7. 如果目标节点p还没有找到,先递归地在左子树中查找。
  8. 如果左子树中没有找到,再递归地在右子树中查找。
  9. 如果当前节点的左右子树都没有找到目标节点p,说明当前节点不在目标节点p的路径上,将其从栈中弹出。
  10. 函数运行结束后,栈中存储的就是从根节点到目标节点p的路径上的节点值。
visited = False
stack = []

def getDisToPar(root, p, stack):
    global visited
    if root is None:
        return
    # 将节点添加到栈中
    stack.append(root.val)
    # 如果找到了
    if not visited and root == p:
        visited = True
        return
    # 先找左子树
    if not visited:
        getDisToPar(root.left, p, stack)
    # 左子树没找到再找右子树
    if not visited:
        getDisToPar(root.right, p, stack)
    # 如果还没找到,说明不在这个节点下面,弹出来
    if not visited:
        stack.pop()
    return

经过我们的强力面试辅助,OA代写,候选人通过这些面试题的解析和沟通,面试官不仅了解了候选人的编程能力,也看到了我在解决问题过程中清晰的思路和有效的沟通技巧。这些不仅有助于应对 tiktok的面试,同时也能提升我们解决实际编程问题的能力。祝大家面试顺利!

如果你也需要我们的面试辅助服务,请 立即联系我们

author avatar
azn7u2@gmail.com
END
 0
Comment(尚無留言)