diff --git a/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.java b/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.java new file mode 100644 index 0000000..04f5fab --- /dev/null +++ b/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.java @@ -0,0 +1,73 @@ +//给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 +// +// 返回删除后的链表的头节点。 +// +// 注意:此题对比原题有改动 +// +// 示例 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. +// +// +// +// +// 说明: +// +// +// 题目保证链表中节点的值互不相同 +// 若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点 +// +// Related Topics 链表 +// 👍 137 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.ListNode; + +//剑指 Offer 18:删除链表的节点 +public class ShanChuLianBiaoDeJieDianLcof{ + public static void main(String[] args) { + //测试代码 + Solution solution = new ShanChuLianBiaoDeJieDianLcof().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +/** + * 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) { + ListNode temp = head; + ListNode pro = head; + while (temp.val == val) { + head = pro = temp = head.next; + } + temp = temp.next; + while (temp != null) { + if (temp.val == val) { + pro.next = temp.next; + }else{ + pro = temp; + } + temp = temp.next; + } + return head; + } +} +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.md b/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.md new file mode 100644 index 0000000..408fb46 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/ShanChuLianBiaoDeJieDianLcof.md @@ -0,0 +1,29 @@ +
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
+ +返回删除后的链表的头节点。
+ +注意:此题对比原题有改动
+ +示例 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. ++ +
+ +
说明:
+ +free
或 delete
被删除的节点