Fork me on GitHub

面试经验01-- 爬虫工程师(字节跳动)

面试过程比较简短(30min)

主要是询问基础技能 

爬取数据的方法,封禁ip,账号的处理等

接下来是询问项目经历,也会在其中穿插一些基础的知识

最后一部分就是做一道算法题,不过我也不清楚这个职位为什么要算法题。

算法题算是中等水平的

一个链表的部分反转


 

 

 

示例 1:

 

1
2
输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

  


示例 2:

1
2
输入:head = [5], left = 1, right = 1
输出:[5]

  

 

这个在leetcode上有原题可以看一下。

 题解 python版

复制代码
 1 class Solution:
 2     def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
 3         def reverse_linked_list(head: ListNode):
 4             # 也可以使用递归反转一个链表
 5             pre = None
 6             cur = head
 7             while cur:
 8                 next = cur.next
 9                 cur.next = pre
10                 pre = cur
11                 cur = next
12 
13         # 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论
14         dummy_node = ListNode(-1)
15         dummy_node.next = head
16         pre = dummy_node
17         # 第 1 步:从虚拟头节点走 left - 1 步,来到 left 节点的前一个节点
18         # 建议写在 for 循环里,语义清晰
19         for _ in range(left - 1):
20             pre = pre.next
21 
22         # 第 2 步:从 pre 再走 right - left + 1 步,来到 right 节点
23         right_node = pre
24         for _ in range(right - left + 1):
25             right_node = right_node.next
26         # 第 3 步:切断出一个子链表(截取链表)
27         left_node = pre.next
28         curr = right_node.next
29 
30         # 注意:切断链接
31         pre.next = None
32         right_node.next = None
33 
34         # 第 4 步:同第 206 题,反转链表的子区间
35         reverse_linked_list(left_node)
36         # 第 5 步:接回到原来的链表中
37         pre.next = right_node
38         left_node.next = curr
39         return dummy_node.next
40 
复制代码

 

posted @   走位,走位  阅读(492)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示