一.题目
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)