题目:
删除链表中等于给定值 val 的所有节点。
示例:

代码:
- 解法一
/**
* 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 head;
}
ListNode root=new ListNode(0);
ListNode rear=root;
ListNode p=head;
while(p!=null){
if(p.val !=val){
if(root.next==null){
root.next=p;
}
rear.next=p;
rear=p;
p=p.next;
rear.next=null;
}else{
if(p.next==null){
break;
}else{
p=p.next;
}
}
}
return root.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) {
while (head!=null&&head.val==val)
{
ListNode delNode=head;
head=head.next;
delNode.next=null;
}
if(head==null)
return null;
ListNode pre=head;
while (pre.next!=null)
{
if(pre.next.val==val)
{
ListNode delNode=pre.next;
pre.next=delNode.next;
delNode.next=null;
}else
{
pre=pre.next;
}
}
return head;
}
}
本文提供两种解决方案,用于删除链表中所有等于给定值的节点。通过迭代方法,利用辅助头节点简化边界条件处理,实现高效节点移除。
328

被折叠的 条评论
为什么被折叠?



