双指针法

Posted wangcl97

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针法相关的知识,希望对你有一定的参考价值。

针对一些要求in-place的问题,使用双指针法可有效的解决。

1.数组

  • 在空间复杂度为O(1)的情况下,移除数组中的元素
int removeElement(int* nums, int numsSize, int val){
    int i=0;
    if(numsSize==0)
        return 0;
    for(int j=0;j<numsSize;j++){
        if(nums[j]!=val){
            nums[i++]=nums[j];
        }
    }
    return i;
}
  • 在空间复杂度为O(1)的情况下,去重已排序的数组
int removeDuplicates(int* nums, int numsSize){
    int i=0;
    if(numsSize==0)
        return 0;
    for(int j=1;j<numsSize;j++){
        if(nums[j]!=nums[i]){
            nums[++i]=nums[j];
        }
    }
    return i+1;
}

以上是关于双指针法的主要内容,如果未能解决你的问题,请参考以下文章

双指针法及题目

双指针法及题目

双指针法

2021/5/20 刷题笔记相交链表以及双指针法

双指针法将时间复杂度从 O(n^2) 优化到 O(n)

LeetCode刷题总结之双指针法