你们好,我是灵魂画师--茄子。技术水平通常,喜欢画画。spa
开始今天的正题。code
删除链表中等于给定值 val 的全部节点。blog
示例:递归
输入: 1->2->6->3->4->5->6, val = 6rem
输出: 1->2->3->4->5it
题解:io
1.递归解法function
思路:class
let removeElements = function (head, val) { if (head == null) { return head } head.next = removeElements(head.next, val); return head.val === val ? head.next : head; };
2.哨兵解法List
思路:
let removeElements = function (head, val) { let dummyHead = new ListNode(); // 设置哨兵节点 dummyHead.next = head; let pre = dummyHead; // 设置pre let cur = head; // 设置cur while (cur != null) { // 判断cur是否为null if (cur.val !== val) { // 值不相同的话,前进pre跟cur pre = cur; cur = cur.next; } else { // 相同,pre.next指向cur.next 3->null pre.next = cur.next; cur = pre.next; } } return dummyHead.next; };
以上就是个人思路以及解法了,但愿你们喜欢我画的图解,我会继续努力的ヾ(◍°∇°◍)ノ゙。(点个赞把我带走吧~~)