# Square of a List - Amazon Top Interview Questions

### Problem Statement :

```Given a list of integers sorted in ascending order nums, square the elements and give the output in sorted order.

Constraints

n ≤ 100,000 where n is the length of nums

Example 1

Input
nums = [-9, -2, 0, 2, 3]

Output
[0, 4, 4, 9, 81]

Example 2

Input
nums = [1, 2, 3, 4, 5]

Output
[1, 4, 9, 16, 25]```

### Solution :

```                        ```Solution in C++ :

vector<int> solve(vector<int>& nums) {
int n = nums.size();
int r = n - 1, l = 0, i = n - 1;
vector<int> res(n);
while (l <= r) {
int rsq = nums[r] * nums[r];
int lsq = nums[l] * nums[l];
if (lsq > rsq) {
res[i] = lsq;
l++;
} else {
res[i] = rsq;
r--;
}
i--;
}
return res;
}```
```

```                        ```Solution in Java :

import java.util.*;

class Solution {
public int[] solve(int[] nums) {
int[] squared = new int[nums.length];
int i = 0;
int j = nums.length - 1;
int k = squared.length - 1;
while (i <= j) {
if (nums[i] * nums[i] > nums[j] * nums[j]) {
squared[k--] = nums[i] * nums[i];
i++;
} else {
squared[k--] = nums[j] * nums[j];
j--;
}
}

return squared;
}
}```
```

```                        ```Solution in Python :

class Solution:
def solve(self, nums):
n = len(nums)
l = 0
r = n - 1
index = n - 1
res = [0 for i in range(len(nums))]
while index >= 0:
if abs(nums[l]) > abs(nums[r]):
res[index] = nums[l] * nums[l]
l += 1
else:
res[index] = nums[r] * nums[r]
r -= 1
index -= 1

return res```
```

## Insert a node at a specific position in a linked list

Given the pointer to the head node of a linked list and an integer to insert at a certain position, create a new node with the given integer as its data attribute, insert this node at the desired position and return the head node. A position of 0 indicates head, a position of 1 indicates one node away from the head and so on. The head pointer given may be null meaning that the initial list is e

## Delete a Node

Delete the node at a given position in a linked list and return a reference to the head node. The head is at position 0. The list may be empty after you delete the node. In that case, return a null value. Example: list=0->1->2->3 position=2 After removing the node at position 2, list'= 0->1->-3. Function Description: Complete the deleteNode function in the editor below. deleteNo

## Print in Reverse

Given a pointer to the head of a singly-linked list, print each data value from the reversed list. If the given list is empty, do not print anything. Example head* refers to the linked list with data values 1->2->3->Null Print the following: 3 2 1 Function Description: Complete the reversePrint function in the editor below. reversePrint has the following parameters: Sing