0
点赞
收藏
分享

微信扫一扫

跟着英雄哥学 C语言

目标践行者 2022-03-30 阅读 50

  一.题目

26. 删除有序数组中的重复项

(1)思路

  1.不要使用额外的空间,你必须在 原地 修改输入数组 

      2.使用 快慢指针

(2)代码

int removeDuplicates(int* nums, int numsSize){    //(1)定义 快慢变量
    int low = 0,fast = 1;                         //(2)当快变量达到边界 运行结束
    while(fast < numsSize){                      //(3)变量值重复,快变量右移
        if(nums[fast] == nums[low]){            //(4)变量值不同,改变下一位数值
            fast++;
        }else{
            nums[low + 1] = nums[fast];   (   //5)慢变量位数加一          
            ++low; 
        }
    }
    return low + 1;                            //(6)因为输出的是数组,所以要大一位

}

  一.题目

217. 存在重复元素

 

(1)思路

       (1)数据太大 不适用快慢指针;所以 重新递增排列一遍 数组,然后判断上下关系

(2)代码

int cmp(int *a,int *b){
    return (*(int *)a)-(*(int *)b);
}
bool containsDuplicate(int* nums, int numsSize){
    int i;
    qsort(nums,numsSize,sizeof(int),cmp);
        for(int i=1;i<numsSize;i++){
        if(nums[i]==nums[i-1]){
            return true;
        }
    }
    return false;
}

二.原题链接

(75条消息) 《画解数据结构》(1 - 1)- 顺序表_英雄哪里出来的博客-CSDN博客

 26. 删除有序数组中的重复项 - 力扣(LeetCode) (leetcode-cn.com)

六:参考

(75条消息) 二分查找、双指针、滑动窗口算法技巧总结_没事请叫我去学习的博客-CSDN博客

ctrl z 害人,我的笔记写完删了好几遍,就这吧 (T—T)

举报

相关推荐

0 条评论