C语言函数int removeElement(int* nums, int numsSize, int val) { int k = 0; for(int i=0;i<numsSize;i++) { if(nums[i] != val) nums[k++] = nums[i]; } return k; } 中,为什么返回k而不是i?

因为i是遍历数组的索引,而k是记录不等于val的元素个数,也就是处理后数组的新长度。题目要求原地修改数组,即只能在原数组上进行操作,不能使用额外的数组空间。因此,我们需要把不等于val的元素覆盖到原数组的前面,然后返回新的长度k。如果直接返回i,那么i最后停留的位置是最后一个不等于val的元素的后一个位置,而不是不等于val的元素的个数。

C语言删除数组元素函数removeElement()解析:为什么返回k而不是i?

原文地址: https://www.cveoy.top/t/topic/mJbb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录