题目
从标准输入读入一个包含 n 个元素的整数数组和一个目标值 x,删除数组中所有取值等于 x 的元素,并输出压缩后的新数组。
输入格式:第一行输入数组长度 n;第二行输入 n 个整数;第三行输入待删除的目标值 x。
输出格式:第一行输出删除后剩余元素的个数;第二行输出压缩后的数组元素(若全部被删则第二行可为空),末尾换行。
数据范围与约定:1 ≤ n ≤ 1000。
思路与算法
1. 列表推导式过滤
使用 [v for v in a if v != x] 快速保留有效元素。
2. 原地双指针覆盖
也可使用读写双指针在原列表上原地覆盖,空间复杂度降为 O(1)。
完整程序
n = int(input())
# 累加阶乘和:1! + 2! + ... + n!
total = 0
f = 1
for i in range(1, n + 1):
f *= i
total += f
print(total)运行示例
输入:
6
1 2 3 2 4 2
2输出:
1 3 4