跟着英雄哥学 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)