6-1 数组元素的区间删除分数 15作者 DS课程组单位 浙江大学给定一个顺序存储的线性表请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储并且相对位置不能改变。函数接口定义:int Delete int A int L int minA int maxA ;其中A是整型数组存储原始线性表的元素;L是表长即A中元素的个数;minA和maxA分别为待删除元素的值域
思路:
- 遍历数组A,使用两个指针i和j来指向数组中的元素。
- 如果A[i]大于minA并且小于maxA,则将A[i]赋值给A[j],然后j自增1。
- 最后将j赋值给L,即为删除后的表长。
复杂度分析:
- 时间复杂度:O(L),其中L为数组A的长度。
- 空间复杂度:O(1)。
实现代码如下:
int Delete(int A[], int L, int minA, int maxA)
{
int i, j;
for (i = 0, j = 0; i < L; i++)
{
if (A[i] <= minA || A[i] >= maxA)
{
A[j] = A[i];
j++;
}
}
return j;
}
原文地址: https://www.cveoy.top/t/topic/jc88 著作权归作者所有。请勿转载和采集!