学习时间:
2023年1月15日
题目描述:

题解分享:
// 作 者 : 繁 华 倾 夏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 力扣(LeetCode):27. 移除元素
// nums:数组 numsSize:数组最大长度 val:要移除元素的值
int removeElement(int* nums, int numsSize, int val) {
int dst = 0, src = 0; // 定义两个数组下标
while (src < numsSize) { // 当src小于numsSize时,代表数组内还有元素存在
if (nums[src] != val) { // 当src所指向的数组元素不等于val时
nums[dst] = nums[src]; // 将元素覆盖到dst所指向的下标位置
src++; // 覆盖元素后,移动src和dst位置
dst++;
}
else { // 否则则证明src所指向的位置是要删除的元素
src++; // 无需进行覆盖,只移动src指向下一个下标位置进行比较
}
}
return dst; // 返回dst,代表被覆盖几次,即将等于val的值全部去除
}
// 测试用例
// 输入 [3, 2, 2, 3] 3
// 输出 [2,2]
int main() {
int nums[4] = { 3,2,2,3 };
int numsSize = sizeof(nums) / sizeof(nums[0]); // 统计数组长度
int dst = removeElement(nums, numsSize, 3);
int i = 0;
while (i<dst) {
i++;
printf("%d ", nums[i]);
}
return 0;
}
【繁华倾夏】【每日力扣题解分享】【Day1】