.耐思尼克官方网站,软环境建设网站,亳州网站开发公司,店面logo设计制作移除元素 给你一个数组 nums 和一个值 val#xff0c;你需要原地移除所有数值等于 val 的元素#xff0c;并返回移除后数组的新长度。不要使用额外的数组空间#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后… 移除元素 给你一个数组 nums 和一个值 val你需要原地移除所有数值等于 val 的元素并返回移除后数组的新长度。不要使用额外的数组空间你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 #include stdio.h/*** RemoveElement函数用于移除数组中所有与指定值相同的元素。* 通过双指针技术遍历数组并将不等于指定值的元素移动到数组的前部。* * param nums 数组的指针数组中的元素类型为char。* param numsSize 数组的长度类型为char表示数组中元素的数量。* param val 指定的值类型为char函数将移除数组中所有与该值相同的元素。* return 返回移除指定值后数组的新长度类型为int。*/
int RemoveElement(char* nums, char numsSize, char val)
{// 初始化两个指针i和j它们都从数组的起始位置开始。int i 0;int j 0;// 遍历数组中的每个元素。for (i 0; i numsSize; i){// 如果当前元素不等于指定值则将其移动到j指针的位置并将j向前移动。if (nums[i] ! val){nums[j] nums[i];j;}}// 返回新数组的长度即j的值。return j;
}// 主函数
int main()
{// 初始化一个字符数组用于后续操作char arr[]{1,2,3,4,5,1,2,3,4,5};// 计算数组长度char arr_Length sizeof(arr)/sizeof(arr[0]);// 初始化一个变量len用于存储数组长度char len 0;// 打印数组长度printf(%d\n,arr_Length);// 遍历并打印数组元素for (int i 0; i arr_Length; i){printf(%d ,arr[i]);}printf(\n);// 调用RemoveElement函数移除数组中特定的元素并更新数组长度len RemoveElement(arr,arr_Length,1);// 打印更新后的数组长度printf(%d\n,len);// 遍历并打印更新后的数组元素for (int i 0; i len; i){printf(%d ,arr[i]);}return 0;
}采用快指针和慢指针的方法在 RemoveElement 函数中设置两个索引分别进行快指引和慢指引其中 i 为快指引j 为慢指引。当数组中的元素和目标元素不一样时进行将 i 索引的数据赋值到 j 索引上当当数组中的元素和目标元素一样时不赋值且 j 索引不增长。