## Two-pointer
- set two pointer starting at the beginning , move one of them faster than another:
- when the faster one reach the end, the slower one will be at the middle.(234)
- if there exist loop, the faster one will eventually catch the slower one.(141)
- set two pointer starting at both end, separating the whole array into two part
- set the second pointer to be a boundary of some limitation.