1 题目
2 C语言代码实现-双指针法
int removeElement(int* nums, int numsSize, int val) {
int i=0;
for(int j=0;j<numsSize;j++){
// 数组当前元素值不等于val,把当前元素移动到i位置
if(nums[j]!=val){
nums[i]=nums[j];
i++;
}
}
return i;
}
3 完整测试代码
#include <stdio.h>
int removeElement(int nums[], int numsSize, int val) {
// 初始化双指针
int i = 0;
// 遍历数组
for (int j = 0; j < numsSize; j++) {
// 如果当前元素不等于目标值
if (nums[j] != val) {
// 将当前元素移动到指针i的位置
nums[i] = nums[j];
// 指针i向后移动
i++;
}
}
// 返回新数组的长度
return i;
}
int main() {
// 示例数组
int nums[] = {3, 2, 2, 3, 4, 5, 3};
// 目标值
int val = 3;
// 数组长度
int numsSize = sizeof(nums) / sizeof(nums[0]);
// 调用函数
int newLength = removeElement(nums, numsSize, val);
// 打印结果
printf("新数组长度: %d\n", newLength);
// 打印修改后的数组
printf("修改后的数组: ");
for (int i = 0; i < newLength; i++) {
printf("%d ", nums[i]);
}
return 0;
}