https://medium.com/@slicesharpy/leetcode-48-understanding-rotate-image-brute-force-to-optimal-in-place-4153e9317735