多少算侮辱性涨薪?
我前同事跳槽前月薪2万,跟老板提离职那天,老板当场拍桌子说:“你要是为了钱,我现在就给你涨!”然后……给他涨了300。
我听完都震惊了,这不是侮辱性涨薪,是用涨薪方式表达“你走吧”。
网友问多少算侮辱性涨薪?我觉得凡是低于一顿烧烤的钱,都不配叫涨薪,顶多算“人走茶凉”前的社死仪式感。
你看我们写代码的,Bug一修就是好几个小时,老板来一句“干得不错”,我以为要涨薪,结果发了两瓶营养快线。兄弟,你是觉得我代码有营养,还是要我赶紧走?
涨薪没错,侮辱的是数字。放我面前涨个9.9元,我都得问一句:“这是不是会员首月体验价?”
算法题:旋转链表
这个题我一开始看到还挺纳闷的,链表你倒腾就倒腾呗,干嘛还要旋转?后来一想,这不就是面试官心血来潮加个Buff,看你是不是能把指针玩明白。
题目大概意思是这样的: 给你一个链表,比如 1->2->3->4->5,然后让你往右旋转 k 次。比如 k=2,结果就变成了 4->5->1->2->3。听着简单,其实考的全是细节处理,尤其是链表尾部接到头部的这个环形变化,稍不注意就翻车。
先说下大致思路吧,我觉得要解这道题,最核心的就是把链表变成一个环,再找到新的断点,把环断开。
我们先来数一数链表的长度,设为 n,然后 k 对 n 取个余,原因很简单,你旋转 n 次跟不旋转是一样的,超了也只是多绕了几圈。所以我们得的是 k = k % n。
然后,从头走 n - k 步,就能走到新的尾节点,它的下一个节点就是新的头部了。最后记得把新的尾巴 next 指针断开,不然你这链表能从头绕到尾,测试用例都跑不出来。
来看段代码(Python):
classListNode:
def__init__(self, val=0, next=None):
self.val = val
self.next = next
defrotateRight(head, k):
ifnot head ornot head.next or k == 0:
return head
# 先统计链表长度
n = 1
tail = head
while tail.next:
tail = tail.next
n += 1
# 取余
k = k % n
if k == 0:
return head
# 构成环
tail.next = head
# 找到新的尾节点
steps_to_new_tail = n - k
new_tail = head
for _ in range(steps_to_new_tail - 1):
new_tail = new_tail.next
new_head = new_tail.next
new_tail.next = None# 断开环
return new_head
我看网上有的思路说什么“用双指针让后一个先走 k 步”,然后再一起往前走,走到头就找到了断点。这种写法虽然也能做,但实话实说,我觉得太烧脑了,特别是面对面试官那种眼神压力的时候,越写越乱,不如直接走一圈数清楚。
还有个常见错误就是忘了处理 k >= n 的情况,不做 k % n 你在大数据量下一下走个十几万步,链表都看傻了你知道不。
这题其实就是链表界的“扳头接尾”。一旦你知道尾巴连头,再从合适位置切断它,就通了。
所以我现在看到“旋转链表”这五个字,脑子里第一反应不是指针操作,而是——这玩意本质就是个数组右移,只不过换成了链表形式,逻辑还是那套。链表虽然看着复杂,核心就是顺着 next 一步一步走,别想着一次跳过去,链表可没数组那么听话。
最后总结一句,链表题不怕难,就怕你绕晕自己。拿稳指针,别让它乱跑,一题破防全靠心态。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。