LeetCode203. 移除链表元素
Posted 不学无墅_NKer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode203. 移除链表元素相关的知识,希望对你有一定的参考价值。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { while(head != null && head.val == val){ // ListNode delNode = head; // head = head.next; // delNode.next = null; head = head.next; } if (head == null){ return null; } ListNode prev = head; while(prev.next != null){ if(prev.next.val == val){ // ListNode delNode = prev.next; // prev.next = delNode.next; // delNode.next = null; prev.next = prev.next.next; } else{ prev = prev.next; } } return head; } }
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ // 使用虚拟头结点版本 // 虚拟头结点的作用:统一在链表中对头节点和其他节点相应的操作。 // 此时,head指向的链表中所有的节点都有前一个节点,就不需要对第一个节点进行特殊处理了。 class Solution { public ListNode removeElements(ListNode head, int val) { ListNode dummyHead = new ListNode(-1);// 任意给一个值,虚拟头结点不会被访问 dummyHead.next = head; ListNode prev = dummyHead; while(prev.next != null){ if(prev.next.val == val){ // ListNode delNode = prev.next; // prev.next = delNode.next; // delNode.next = null; prev.next = prev.next.next; } else{ prev = prev.next; } } return dummyHead.next; } }
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ // 使用递归版本 // 思想是把原问题转化为更小的问题 class Solution { public ListNode removeElements(ListNode head, int val) { if(head == null){ return null; } ListNode res = removeElements(head.next, val); if(head.val == val){ return res; } else{ head.next = res; return head; } } }
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ // 对Solution3的递归版本进一步简化。 class Solution { public ListNode removeElements(ListNode head, int val) { if(head == null){ return null; } head.next = removeElements(head.next, val); return head.val == val ? head.next : head; } }
以上是关于LeetCode203. 移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章