Zero title: Algorithm (leetode, with mind map + all solutions) 300 questions (2130) maximum twin sum of linked list
a topic description
Two solutions overview (mind map)
All three solutions
1 Scenario 1
1) Code:
// 方案1 “化归法(即 把不熟悉的变成熟悉的、复杂的变成简单的,如 这里先将链表 转换成 数组)”。
// 技巧:原输入为链表可以考虑将其转换成数组,因为链表的增、删操作便捷,但按索引位置查询(数组便捷)操作不便捷!
// 思路:
// 1)状态初始化: resList = [], resMax = Number.NEGATIVE_INFINITY 。
// 2)核心1:遍历 链表 ,将每个节点值 依次 存入数组 resList 中。
// 3)核心2:遍历 resList 的前半部分,求得每个 孪生和(即 tempSum ) 。
// 3.1)更新 resMax ,resMax = Math.max(resMax, tempSum) 。
// 4)返回结果 resMax 。
var pairSum = function(head) {
// 1)状态初始化: resList = [], resMax = Number.NEGATIVE_INFINITY 。
let resList = [],
resMax = Number.NEGATIVE_INFINITY;
// 2)核心1:遍历 链表 ,将每个节点值 依次 存入数组 resList 中。
while (head) {
resList.push(head.val);
head = head.next;
}
// 3)核心2:遍历 resList 的前半部分,求得每个 孪生和(即 tempSum ) 。
const l = resList.length;
for (let i = 0; i < Math.floor(l / 2); i++) {
const tempSum = resList[i] + resList[l - i - 1];
// 3.1)更新 resMax ,resMax = Math.max(resMax, tempSum) 。
resMax = Math.max(resMax, tempSum);
}
// 4)返回结果 resMax 。
return resMax;
};
2 Option 2
1) Code:
// 方案2 “快慢指针 + 双指针 法”。
// 参考:
// 1)https://leetcode-cn.com/problems/maximum-twin-sum-of-a-linked-list/solution/shuang-zhou-sai-di-69chang-leetcode5961l-rals/
// 思路:
// 1)状态初始化:slow = head, fast = head, resSum = Number.NEGATIVE_INFINITY 。
// 2)核心1:通过 快慢指针,寻找链表中点。
// 3)核心2:反转后半部分的链表。
// 4)核心3:通过 双指针,计算所有的孪生和(即 tempSum )。
// 5)返回结果 resSum 。
var pairSum = function(head) {
// 1)状态初始化:slow = head, fast = head, resSum = Number.NEGATIVE_INFINITY 。
let slow = head,
fast = head,
resSum = Number.NEGATIVE_INFINITY;
// 2)核心1:通过 快慢指针,寻找链表中点。
while (fast !== null && fast.next !== null) {
fast = fast.next.next;
slow = slow.next;
}
// 3)核心2:反转后半部分的链表。
let cur = slow,
pre = null;
while (cur !== null) {
let tempNode = cur.next;
cur.next = pre;
pre = cur;
cur = tempNode;
}
// 4)核心3:通过 双指针,计算所有的孪生和(即 tempSum )。
while (head !== null && pre !== null) {
// 4.1)根据情况,更新 resSum 值(从 resSum、tempSum 中取最大值)。
const tempSum = (head.val + pre.val);
resSum = Math.max(resSum, tempSum);
head = head.next;
pre = pre.next;
}
// 5)返回结果 resSum 。
return resSum;
}
Four resource sharing & more
1 Historical Articles - Overview
2 [Resource Sharing] Algorithm Clearance + Interview Collection Algorithm Clearance + Interview Collection
1)算法通关40讲(极客 - 外企大佬讲的):
链接: https://pan.baidu.com/s/1C175QEmcAunjnCzYzoLBz 提取码: hjna
2)动态规划专题(价值几百美刀~):https://www.bilibili.com/video/BV1nt4y1Y7nz
3)前端面经:
3.1)https://www.nowcoder.com/tutorial/96
3.2)https://muyiy.cn/question
3.3)https://hub.fastgit.org/haizlin/fe-interview/blob/master/category/history.md
注:若失效请前往VX公众号: 码农三少 ,发送关键字: LeetCode 或 算法 ,即可获取最新的链接~
3 Blogger Profile
, a blogger dedicated to writing 161ea13b0e8dbf minimalist but complete problem solutions (algorithm ).
Focus on multiple solutions for one question, structured thinking , welcome to brush through LeetCode~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。