Skip to content

快慢指针操作原数组

注意数组变化了

slow=0,fast=1 如果相同,则fat++

不同,将fast的值赋值给slow+1(第一个移动是有的),slow++,fast++

注意数组已经变了

image-20250621200632300

c
#include <stdio.h>
#include <string.h>

int main() {
    int arr[]={1,2,2,3,3,3,4,4,5};
    int count=sizeof(arr)/sizeof(arr[0]);
    int slow=0;
    int fast=1;
    for(int i=0;i<count;i++)
    {
        if(count==2)
        {
            slow=2;
            break;
        }
        if(arr[slow]==arr[fast])
        {
            fast++;
        }else
        {
            arr[slow+1]=arr[fast];
            slow++;
            fast++;
        }
    }
    for(int i=0;i<slow;i++)
    {
        printf("%d,",arr[i]);
    }
}