LCR 136. 删除链表的节点
题目
题解
/**
1. Definition for singly-linked list.
2. public class ListNode {
3. int val;
4. ListNode next;
5. ListNode(int x) { val = x; }
6. }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
ListNode dummyHead = new ListNode(0, head);
ListNode p;
p=dummyHead;
while(p.next!=null){
if(p.next.val==val){
p.next=p.next.next;
break;
}else{
p=p.next;
}
}
return dummyHead.next;//head;
}
}
题目不算难
最主要的就是有一些细节问题:
- 首先就是需要将虚拟头节点实例化,赋0和head的地址
- 是令p.next!=null 而不是p!=null,当p==null时,就可能越界。
- 循环中找到值记得跳出来,节约时间。
- 最后就是返回值一定是返回虚拟头节点的next,而不是直接返回head,有可能头节点的值就是需要删除的值,可能会导致答案错误。