two pointers 利用问题本身特点以及序列的特性,使用两个下标扫描从而快速解决问题。
two pointers可以同向也可以反向。例如求在一个没有相同元素的序列中任取两个元素和为M的方式有多少种。这个时候如果直接遍历,那么需要两个循环,即复杂度为O(n2)。如果我们将序列排序,利用i,j反向扫描,则复杂度仅为O(n)。另外,当我们在归并排序时,merge也采用的是同向扫描,快速排序中则采用的是反向扫描,这些排序的优越性也体现了two pointers的强大。
转载请注明原文地址:https://ipadbbs.8miu.com/read-43212.html