乐趣区

关于c:双指针在数组操作中的应用

数组作为一种简略直观的数据结构,当须要对其操作时,应用双指针有时能够带来出奇的成果。

问题:给定一个数组,将所有 0 挪动到数组的尾部,同时放弃非零元素的绝对程序。
【0,1,0,3,12】
挪动完当前为 ->[1,3,12,0,0]

应用双指针,一个快指针遍历数组,一个慢指针用来存储非零数据。

void moveZeroes(int* nums, int numsSize){
    int fast = 0, slow = 0;
    while (fast < numsSize)
    {if (nums[fast] != 0)
        {nums[slow] = nums[fast];
            if (fast > slow)
                nums[fast] = 0;
            slow++;
        }
        fast++;
    }
}

将非零数据,存入数组的前段,赋值操作结束当前 nums[fast] 曾经没有用途了将其置 0,须要留神的是 slow 等于 fast 的状况,防止将 slow 笼罩。

退出移动版