Palindrome Linked List
Difficulty: Easy
Category: DSA
Topics: Linked List, Two Pointers, Stack, Recursion
Asked at: Microsoft, Facebook, Amazon, Adobe, Capital One, Google, Oracle, Bloomberg, Uber, Snapchat, PayTM
Given the `head` of a singly linked list, return `true`_ if it is a __palindrome__ or _`false`_ otherwise_.
**Example 1:**
**Input:** head = [1,2,2,1]
**Output:** true
```
**Example 2:**
**Input:** head = [1,2]
**Output:** false
```
**Constraints:**
- The number of nodes in the list is in the range `[1, 105]`.
- `0 <= Node.val <= 9`
**Follow up:** Could you do it in `O(n)` time and `O(1)` space?