# Longest Consecutive Sequence - Amazon Top Interview Questions

### Problem Statement :

```Given an unsorted array of integers nums, find the length of the longest sequence of consecutive elements.

Constraints

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

Example 1

Input

nums = [100, 4, 200, 1, 3, 2]

Output

4

Explanation

The longest sequence of consecutive elements is [1, 2, 3, 4]. so we return its length: 4.

Example 2

Input

nums = [100, 4, 200, 1, 3, 2, 101, 105, 103, 102, 104]

Output

6

Explanation

The longest sequence of consecutive elements is [100, 101, 102, 103, 104, 105]. so we return its length: 6.```

### Solution :

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

int solve(vector<int>& nums) {
int res = 0;
unordered_map<int, int> hash;
for (int i : nums) {
hash[i]++;
}

for (int i : nums) {
if (hash[i] == 0) continue;
int cnt = 1;
int next = i + 1;
int pre = i - 1;
while (hash.find(next) != hash.end() && hash[next] > 0) {
cnt++;
hash[next++]--;
}
while (hash.find(pre) != hash.end() && hash[pre] > 0) {
cnt++;
hash[pre--]--;
}

res = max(res, cnt);
}

return res;
}```
```

```                        ```Solution in Python :

class Solution:
def solve(self, nums):
nums = set(nums)
best = 0
for x in nums:
if x - 1 not in nums:
y = x + 1
while y in nums:
y += 1
best = max(best, y - x)
return best```
```

## 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

Given the pointer to the head node of a linked list, change the next pointers of the nodes so that their order is reversed. The head pointer given may be null meaning that the initial list is empty. Example: head references the list 1->2->3->Null. Manipulate the next pointers of each node in place and return head, now referencing the head of the list 3->2->1->Null. Function Descriptio