双指针从零学习
双指针是算法中非常基础且重要的技巧,今天我来聊聊这个话题。
双指针,顾名思义就是使用两个指针来解决问题。这两个指针可以同向移动,也可以反向移动,甚至可以一个快一个慢。根据不同的场景,选择不同的指针策略,能够大大简化问题。
以一个常见问题为例:删除有序数组中的重复项。
解法一:暴力解法
最直观的想法是,遇到重复的就把后面的元素都前移一位。这样虽然能解决问题,但时间复杂度是O(n²),空间复杂度是O(1)。
代码实现:
public int removeDuplicates(int[] nums) ...