每天一道算法题系列:
来源:力扣(LeetCode)
本题链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/
来源是力扣,大家喜欢可以去力扣中文网做相应的其他的题,某浏览器直接搜力扣即可。
本题难度是简单
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意:此题对比原题有改动
示例 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.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
//习惯判空
if (head == null)
return head;
//如果要删除的是头结点,直接返回头结点的下一个结点即可
if (head.val == val)
return head.next;
//我这里是使用的两个指针的形式
ListNode cur = null;
ListNode tmp = head ;
while(tmp != null){
if(tmp.val == val){
/*
这里判断的是如果是当前要删除的值,那么就让他的next指向
后面一个数
*/
cur.next = cur.next.next ;
break ;
}
cur = tmp;
tmp = tmp.next ;
}
return head ;
}
}
上一篇文章:每天一道算法题系列三十之数值的整数次方
如果本篇内容有问题,请第一时间联系我,我会第一时间修改。
谢谢大家。