码迷,mamicode.com
首页 > 其他好文 > 详细

双指针法

时间:2019-11-23 23:52:57      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:要求   移除   空间   情况下   ret   ace   去重   dup   解决   

针对一些要求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;
}

双指针法

标签:要求   移除   空间   情况下   ret   ace   去重   dup   解决   

原文地址:https://www.cnblogs.com/wangcl97/p/11920449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!