今日题目:
牛客网题目我已经打不开了,估计要买会员😓,不过当然已经保存github。而且leetcode上也有对应的题目。
题目一 154. 复杂链表的复制
这道题初级的做法使用一个map存储node节点和新创建节点的对应关系。遍历两遍列表:
- 遍历一遍构建节点和map
- 遍历第二遍设置新节点的next和random,都可以从map中直接取出来,如果有的话
var copyRandomList = function(head) {
let newHead = new Node();
let node = head;
let map = new Map();
while (node) {
const newNode = new Node(node.val);
map.set(node, newNode);
node = node.next;
}
node = head;
let pre = newHead;
while (node) {
let newNode = map.get(node);
node.random && (newNode.random = map.get(node.random));
node.next && (newNode.next = map.get(node.next));
pre.next = newNode;
pre = newNode;
node = node.next;
}
return newHead.next;
};
题目二 83. 删除排序链表中的重复元素
这个第一次还做错了,又做了一遍好了。也不难,做了删除数组的重复元素,又开始做删除链表的重复元素,数组有的链表统统有,而且这都是基础操作吧。
var deleteDuplicates = function(head) {
if (!head || !head.next) {
return head;
}
let pre = head;
let cur = head.next;
while (cur) {
if (pre.val === cur.val) {
pre.next = cur.next;
cur = cur.next;
} else {
pre = pre.next;
cur = cur.next;
}
}
return head;
};
题目三 136. 删除链表的节点
依然简单,但是删除链表的节点,要注意一个节点的情况,所以用一个哑节点来抹平差异。
var deleteNode = function(head, val) {
let dummyHead = new ListNode();
dummyHead.next = head;
let pre = dummyHead;
let cur = head;
while (cur) {
if (cur.val === val) {
pre.next = cur.next;
} else {
pre = pre.next;
}
cur = cur.next;
}
return dummyHead.next;
};
碎碎念
这篇算法总结拖了很久,因为第一道题卡住了,以及过了周六日,陪娃,而这两天开发需求也没时间写。
但今天我emo了,为什么呢,因为想到不能开心的写代码了,我就难受。
所以如果有机会的话,我会继续看,因为无法认同这里的价值观,所以还是想follow my heart。
继续加油!!如果有机会,我一定要看,因为不能继续在这待下去了,待下去技术整个就废了。
我希望成为一个技术大牛。这就是我的愿望。即使前路坎坷,我依然想追寻内心。
虽然现实很残酷,尤其是对大龄程序员,当你前期没有很好的发展,在后期会非常被动,所以总是想劝刚入行几年的小鲜肉,如果你们依然想做程序员,依然觉得技术很niubi,那就好好珍惜前几年的工作时光,如果把握好了前几年,后期的职业生涯会越来越顺的,所谓先苦后甜就是这样的。但如果不想写代码的话就另说了。
为什么喜欢技术?
- 写代码会使心里安静下来,进入一段心流的状态。
- 当你解决一个难题的时候,会非常开心。
- 从大学到现在一直在计算机兜兜转转,想坚持下去,即使它对大龄不友好,那依然想做下去。
但当然只做技术的程序员是走不远的,因为技术是服务业务的,在做技术的时候一定要抬头看业务。如果你是一个普通的程序员,那工作时永远记得:
- 学习业务,了解你这个产品的背景,为什么有这个产品,为什么有这个需求。
- 经常反思,把遇到的问题及时记录下来。
但为什么之前没有做到?
因为需求太多了,一直在忙需求,忙碌着一休息下来就不想看代码了,而当时遇到的问题也没有及时总结,所以造成了恶性循环。持续的加班会不断地消耗你,所以当你持续加班的时候,一定要停下来想想自己有没有提升,及时进行反思和修正,防止自己的职业生涯到后期的被动。
这几年的感触,如果一直做重复低级别的工作,那就会在低级别打转,如果你升到了高级别,会在高级别不断升级。就像头部效应,资源机会会不断向头部人员集中,而如果你没有上升到头部,没有意识到这个问题,就会在低级别打转,一开始差距是不显现的,但这个差距会像指数级别一样随着时间的推移越来越显现出来。而且一直80分不如一次100分。所以做事情还是要追求极致,而自己的似乎缺乏这种极致感,我喜欢一遍一遍来,直到做到满意,而不是一次性做到极致。
念念叨叨了这么多,把自己的情绪处理下,继续学习了。
加油💪🏻!重新出发💪