**Problem Description**

Given a linked list **A** of length **N** and an integer **B**.

You need to find the value of the **B ^{th}** node from the middle towards the beginning of the Linked List

If no such element exists, then return **-1**.

**NOTE:**

- Position of middle node is: (N/2)+1, where N is the total number of nodes in the list.

- 1 <= N <= 10
^{5} - 1<= Value in Each Link List Node <= 10
^{3} - 1 <= B <= 10
^{5}

First argument is the head pointer of the linkedlist **A**.

Second argument is an integer **B**.

Return an integer denoting the value of the **B ^{th}** from the middle towards the head of the linked list

Input 1:

A = 3 -> 4 -> 7 -> 5 -> 6 -> 1 6 -> 15 -> 61 -> 16 B = 3

Input 2:

A = 1 -> 14 -> 6 -> 16 -> 4 -> 10 B = 2

Input 3:

A = 1 -> 14 -> 6 -> 16 -> 4 -> 10 B = 10

Output 1:

4

Output 2:

14

Output 3:

-1

Explanation 1:

The Middle of the linked list is the node with value 6. The 1^{st}node from the middle of the linked list is the node with value 5. The 2^{nd}node from the middle of the linked list is the node with value 7. The 3^{rd}node from the middle of the linked list is the node with value 4. So we will output 4.

Explanation 2:

The Middle of the linked list is the node with value 16. The 1^{st}node from the middle of the linked list is the node with value 6. The 2^{nd}node from the middle of the linked list is the node with value 14. So we will output 14.

Explanation 3:

The Middle of the linked list is the node with value 16. There are only 3 nodes to the left of the middle node and we need to find the 10^{th}node which doesn't exist so we will return -1.

NOTE:You only need to implement the given function. Do not read input, instead use the arguments to the function. Do not print the output, instead return values as specified. Still have a doubt? Checkout Sample Codes for more details.

- Hint 1
- Solution Approach
- Complete Solution

Loading...