数据结构萌新,欢迎指正
判断题
选择题
编程题
题意
我们可以使用 C 语言提供的数组直接进行线性表操作,由于题目未给出明确的问题规模,我们既可以根据经验预测出问题规模,也可以根据输入动态的开出相应大小的内存
数据很水变现不出 ({O(n)}) 和 ({O(n^2)}) 的区别
解法1:水题快速AC法
时间 ({O(n)}) 空间 ({O(1)})
// 答案正确,2ms,436KB
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n + 1];
for (int i = 0; i < n; i++)
cin >> arr[i];
int a, b;
cin >> a >> b;
bool flag = true;
for (int i = 0; i < n; i++)
if (arr[i] < a || arr[i] > b)
{
if(flag) flag = 0;
else cout << " ";
cout << arr[i];
}
return 0;
}
解法2:真就删除法(正道)
时间 ({O(n^2)}) 空间 ({O(1)})
// 答案正确,3ms,488KB
#include <bits/stdc++.h>
using namespace std;
int len, x, y;
int main()
{
cin >> len;
int a[len];
for (int i = 0; i < len; i++)
cin >> a[i];
cin >> x >> y;
for (int i = 0; i < len; i++)
{
if (a[i] >= x && a[i] <= y)
{
for (int j = i; j < len - 1; j++)
a[j] = a[j + 1];
--len, --i;
}
}
for (int i = 0; i < len; i++)
{
if (i != 0) cout << " ";
cout << a[i];
}
cout << endl;
}