From 20632b1d7c9669b2a25e611ca5436e97696b5d84 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sun, 7 Jan 2024 23:14:58 +0100 Subject: [PATCH] =?UTF-8?q?cs:=20add=20=E2=80=9C2095.=20Delete=20the=20Mid?= =?UTF-8?q?dle=20Node=20of=20a=20Linked=20List=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- cs/delete-the-middle-node-of-a-linked-list.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 cs/delete-the-middle-node-of-a-linked-list.cs diff --git a/cs/delete-the-middle-node-of-a-linked-list.cs b/cs/delete-the-middle-node-of-a-linked-list.cs new file mode 100644 index 0000000..f5d5a28 --- /dev/null +++ b/cs/delete-the-middle-node-of-a-linked-list.cs @@ -0,0 +1,43 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * public int val; + * public ListNode next; + * public ListNode(int val=0, ListNode next=null) { + * this.val = val; + * this.next = next; + * } + * } + */ +public class Solution { + private int Count(ListNode node) { + var count = 0; + + for (; node != null; node = node.next) { + ++count; + } + + return count; + } + + public ListNode DeleteMiddle(ListNode head) { + if (head == null) { + return null; + } + + var count = Count(head); + if (count == 1) { + return null; + } + + var mid = count >> 1; + + var node = head; + for (var i = 0; i < mid - 1; ++i) { + node = node.next; + } + node.next = node.next.next; + + return head; + } +}