//27 移除数组某个元素
/*示例 1:
输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。
示例 2:
输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*/
#include<stdio.h>
int main()
{
int i = 0,arr[100];
int k = 0,p = 0;
scanf("%d", &k);
while (scanf("%d", &arr[i]) == 1)//录取要删除的元素
{
i++;
}
for (int j = 0; j < i; j++)//找到第一要删除元素的下标
{
if (arr[j] == k)
{
p = j;
break;
}
}
for (int j = p + 1; j < i; j++)//用j向后找不是k的元素 用p定位当前元素(要删除的元素) 相当于将要删除元素覆盖掉
{
if (arr[j] != k)
{
arr[p] = arr[j];
p++;//相当于新数组大小
}
}
printf("%d\n", p);//打印数组大小
for (int i = 0; i < p; i++)//打印数组元素
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果 如下
期待大家评论 加油铁汁们~