【发布时间】:2020-10-03 15:52:42
【问题描述】:
我从 LeetCode 得到了这个问题
问题 21,https://leetcode.com/problems/merge-two-sorted-lists/
但不仅仅是为了解决这个问题
这是我对我的问题的描述我有一个原始链表[1,2,4],它的数据结构是这样的:
function ListNode(val, next) {
this.val = (val===undefined ? 0 : val)
this.next = (next===undefined ? null : next)
}
我想在 2 之后插入 3,并将其变为 [1,2,3,4]。
几乎从我读过的所有教程中,他们都告诉我这样做:
var insert = function(l1) {
let i=0;
let p = l1;
while(i<1 && p){
p = p.next;
i++;
}
let tem = new ListNode(3,p.next);
p.next = tem;
return p;
};
但是 p 是 [2,3,4] 因为 p 在完成 while 循环时已经分配为 [2,4] ,显然这是不对的。
那么我该如何解决这个问题呢?
以及为什么教程说像find the node(p) you want to insert after,and create a new node(q), and q.next = p.next ;p.next = q?
【问题讨论】:
-
提议的“算法”有哪些你不明白的地方?
-
为什么在第一次迭代后停止
while循环?您甚至没有测试您当前在列表中的哪个节点。 -
@Andreas 很抱歉没有说清楚,我这样做是为了测试目的,为了直接获取节点 2,我对其进行了硬编码。
-
尝试并实现这一点,看看你能走多远。如果您仍然遇到问题,请在此处将代码作为 sn-p 发布。这将使人们更容易为您提供帮助。
标签: javascript algorithm ecmascript-6 linked-list