From opposite-end pointers on sorted arrays to fast-slow pointers and triplet/quadruplet sum patterns.