O(n)O(n)O(n) time, O(1)O(1)O(1) space in-shuffle algoritm
https://arxiv.org/pdf/0805.1598.pdf
leetcode