今日题目(剑指Offer系列)
剑指 Offer 18. 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值, 定义一个函数删除该节点。 返回删除后的链表的头节点。
示例:
示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入: head = [4,5,1,9], val = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
解题思路:
>本题目很简单就是进行删除链表节点 >但是力扣中和我们学数据结构时不一样,它的链表没有头节点 >删除链表节点我们需要它前一个节点的指针 >所以我们自己设置个头节点放在前面,这样就可以通用 >不管是删除第一个还是任何节点 >如果不这样的话,删除第一个节点时需要单独进行判断
Python解法:
class Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: myHead=ListNode() myHead.next=head tmp=myHead while tmp.next!=None: if tmp.next.val==val: tmp.next=tmp.next.next break tmp=tmp.next return myHead.next
Java解法:
class Solution { public ListNode deleteNode(ListNode head, int val) { ListNode myHead=new ListNode(); myHead.next=head; ListNode tmp=myHead; while(tmp.next!=null){ if(tmp.next.val==val){ tmp.next=tmp.next.next; break; } tmp=tmp.next; } return myHead.next; } }