https://medium.com/@imrajeshberwal/a-comprehensive-guide-for-time-complexity-and-big-o-notation-4ebef201dfc8