Two Sum 对排序后的array来说,为什么一开始很难想到通过beginning point和end point两端,来开始做搜索?一个直观的想法肯定是任意找寻两个点(左右)arr[i]
, arr[j]
,看它们的sum是否等于target。
可是,麻烦的问题是,如果它们的和小于target,下一步该怎么操作呢?似乎都可以通过让这两个点向右移动来做调整,但到底调整哪一个点呢?这就是麻烦所在。
所以一个办法就是:
- 如果你让某个点就在最右端呢?这不就只能通过移动左边的点来放大结果吗?
- 而如果你让另一个点就在最左段,不就只能通过移动右边的点来缩小结果吗?
把他们结合起来,最合适的搜索,就是从最左边的beginning point和最右端的end point开始搜索。
网友评论