题解 | #牛客春招刷题训练营#游游的排列构造

游游的排列构造

https://www.nowcoder.com/practice/daface8be3a74d79aac27e56b067f1b0

n, k = map(int, input().split())

# 生成好元素的位置(1-based的pos列表)
pos = [2 * i + 1 for i in range(k)]

# 检查位置是否超过n,这里假设输入是有效的,即2k-1 <=n
# 生成好元素的数值,从n-k+1到n,按顺序填充到pos中
good_values = list(range(n - k + 1, n + 1))

# 初始化排列数组
ans = [0] * n

# 将好元素的值填入对应的位置(注意转换为0-based的索引)
for i in range(k):
    ans[pos[i] - 1] = good_values[i]

# 生成剩下的数值,即不在good_values中的数,按升序排列
remaining_values = sorted(set(range(1, n + 1)) - set(good_values))

# 将剩下的数值填充到ans中的剩余位置(0-based)
remaining_index = 0
for i in range(n):
    if ans[i] == 0:
        ans[i] = remaining_values[remaining_index]
        remaining_index += 1

# 输出结果
print(' '.join(map(str, ans)))

全部评论
好清晰的题解,一目了然
点赞 回复 分享
发布于 07-17 19:19 湖南
代码逻辑清晰
点赞 回复 分享
发布于 07-17 19:19 湖南

相关推荐

谁知道呢_:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-29 14:02
纠结的茶叶蛋在开会:太简单了,技术和业务没一个够用的,要么学业务,去搞erp或者his,要么专精技术,去搞架构
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务