主页 > 其他  > 

【C语言】移除元素

【C语言】移除元素

移除元素 给你一个数组 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 索引不增长。

标签:

【C语言】移除元素由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【C语言】移除元素