题目
已知一个包含 n 个整数的非降序有序数组,再输入一个整数 x,将 x 插入到数组中合适的位置,使插入后的新数组依然保持有序。
输入格式:第一行输入原数组大小 n;第二行输入 n 个升序整数;第三行输入待插入的整数 x。
输出格式:在一行中输出插入新元素后的完整数组,元素以空格分隔,末尾换行。
数据范围与约定:0 ≤ n ≤ 500。
思路与算法
1. 二分查找插入点
Python 标准库 bisect.bisect_left(a, x) 可以在对数时间 O(log n) 内找到正确插入位置。
2. 列表原地插入
通过 a.insert(idx, x) 插入元素,保持列表有序性。
完整程序
# 遍历 1~999 判断各位乘积与各位和是否相等
for i in range(1, 1000):
prod = 1
s = 0
x = i
while x > 0:
d = x % 10
prod *= d
s += d
x //= 10
if prod == s:
print(i)运行示例
输入:
3
1 3 5
2输出:
1 2 3 5