Skip to content
On this page

携程前端笔试

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)