免费域名申请个人网站,手机app软件制作工具,舆情信息报送,广州口碑好的网站建设力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 思路一#xff1a;快慢指针 在数组中#xff0c;快慢指针就是两个整数下标#xff0c;定义 fast 和 slow 这里我们从下标1开始#xff08;下标0的数据就1个#xff0c;没有重复项#xff09;LeetCode官网 - 全球极客挚爱的技术成长平台 思路一快慢指针 在数组中快慢指针就是两个整数下标定义 fast 和 slow 这里我们从下标1开始下标0的数据就1个没有重复项如果fast 和 fast-1位置的数据相同fast如果不相同将fast里的数据赋值到slow指向的位置slow,fast。 int removeDuplicates(int* nums, int numsSize){//定义快慢指针int fast 1;int slow 1;//当快指针不指向空时进⾏判断while(fast numsSize-1) {//判断快指针指向的元素与前⼀个元素是否相同if(nums[fast] ! nums[fast-1]) {//若不相同将快指针指向的元素赋值给慢指针指向的元素nums[slow] nums[fast];}//快指针后移继续遍历fast;}//返回慢指针的值作为数组⻓度return slow;
}
思路二新建数组 因为题目要求是原地删除所以接下来只是简单讲解一下思路并不会有详细的代码展示。如果感兴趣可以自己在编译器上实践试试。 将原数组的数据放入新数组中再放入之前判断是否有相同数据。 下标 i ( 0 i numsSize)从0开始直到数组末尾判断nums[i]与nums[j]是否相同0 j i , j每次循环赋值为0如果不相同则将nums[i]放入新数组