> 文档中心 > 跟着英雄哥学 C语言

跟着英雄哥学 C语言


  一.题目

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)