今日学习的文章链接
203.移除链表元素
看到题目的第一想法
没什么思路
看完题解之后
刚开始时不太理解
原链表进行删除没写出来
虚拟头节点法
看得懂
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @param {number} val
* @return {ListNode}
*/
var removeElements = function(head, val) {
// 没啥思路
// 看了题解之后
// 在原链表上进行删除 不会
// 删除头节点
// while(head!==null&&head.val!==val){
// head=head.next
// }
// // 删除非头节点
// let cur = head
// while(cur.next){
// if(cur.next.val===val){
// cur.next = cur.next.next;
// }
// cur=cur.next
// }
// return head
// 虚拟头节点
const ret = new ListNode(0,head);
let cur = ret;
while(cur.next){
if(cur.next.val===val){
cur.next=cur.next.next;
continue;//这个得有 不然还会执行下面的语句 那就cur.next可能为null 就会报null 的读取错误
}
cur=cur.next
}
return ret.next
};
问题
JS中怎么设置头节点
const ret = new ListNode(0,head)
为什么continue得有
因为不写的话会执行下面一行代码,会出现null读取的情况
设计链表
有些不太懂
收获
对链表有了一定的了解