# Sum of distances between the two nearest perfect squares to all the nodes of the given linked list

Given a linked list, the task is to find the sum of distances between the two nearest perfect squares for all the nodes of the given linked list.

Examples:

Input: 3 -> 15 -> 7 -> NULL
Output: 15
For 3: closest left perfect square is 1 and closest right 4 i.e. 4-1 = 3
For 15: 16 – 9 = 7
For 7: 9 – 4 = 5
3 + 7 + 5 = 15

Input: 1 -> 5 -> 10 -> 78 -> 23 -> NULL
Output: 38

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Initialise sum = 0 and for every node, if the current node’s value is a perfect square itself then the left and right closest perfect square will be the value itself and distance will be 0. Else, find the left and right closest perfect squares say leftPS and rightPS and update sum = sum + (rightPS – leftPS).

Below is the implementation of the above approach:

 `# Python3 implementation of the approach ` `import` `sys ` `import` `math ` ` `  `# Structure for a node ` `class` `Node: ` `    ``def` `__init__(``self``, data): ` `        ``self``.data ``=` `data ` `        ``self``.``next` `=` `None` ` `  `# Function to find the total distance sum ` `def` `distanceSum(head): ` ` `  `    ``# If head is null ` `    ``if` `not` `head: ` `        ``return` `     `  `    ``# To store the required sum ` `    ``tsum ``=` `0` `    ``temp ``=` `head ` `     `  `    ``# Traversing through all the nodes one by one ` `    ``while``(temp): ` `        ``sq_root ``=` `math.sqrt(temp.data) ` ` `  `    ``# If current node is not a perfect square  ` `    ``# then find left perfect square and  ` `    ``# right perfect square ` `        ``if` `sq_root

Output:

```41
```

Time Complexity: O(n)

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.