携程前端笔试
2023.3.29
1.游游的数字圈
python
num = list(input())
count = 0
for n in num:
if n in ['0', '6', '9']:
count += 1
if n == '8':
count += 2
print(count)
2.游游定义一个排列中,满足以下条件的为“好元素":对于第i个元素ai而言,ai为前i个元素的最大值。例如,[3,1,5,2,4]中,第一个和第三个元素是好元素。游游希望你构造一个长度为n的排列,其中有k个好元素且任意两个好元素都不相邻。你能帮帮她吗?
排列的定义:由1到n所有正整数组成的长度为n的数组,每个正整数出现恰好一次。
输入描述
两个正整数n, k,用空格隔开。
1<= n <= 10^5。
1<= k <= n/2的向上取整。
输出描述
一行n个正整数,代表游游构造的排列。有多解时输出任意即可。
示例1
输入
5 2
输出
3 1 5 2 4
示例2
输入
5 3
输出
2 1 4 3 5
python
n, k = map(int, input().split())
ans = [0] * n
nums = [i+1 for i in range(n)]
insertIdxs = [2*i for i in range(k)]
while insertIdxs:
idx = insertIdxs.pop()
ans[idx] = nums.pop()
for i in range(n):
if ans[i] == 0:
ans[i] = nums.pop()
print(ans)
snowy