携程笔试

import sys
from collections import Counter
string = input()
cnt = Counter(string)
new = {
    'y': cnt['y'],
    'o': cnt['o'],
    'u': cnt['u']
}
nums = min(new.values())
res = 'you' * nums
for k, v in cnt.items():
    if k in 'you' and v > nums:
        # print(k,v)
        res += str(k) * (v-nums)
    elif k not in 'you':
        res += str(k) * v
print(res)
# 暴力会超时间,用正反序前缀和,空间换时间
import sys
n = int(input())
nums = list(map(int, input().split()))
sorted_nums = sorted(nums)
left = [0] * n
cum = 0
for i in range(n):
    cum += sorted_nums[i]
    left[i] = cum
right = [0] * n
cum = 0
for i in range(n-1, -1, -1):
    cum += sorted_nums[i]
    right[i] = cum
hashmp = dict()
for i in range(n):
    if sorted_nums[i] in hashmp:
        continue
    if i > 0:
        ops_left = sorted_nums[i] * i - left[i-1]
    else:
        ops_left = 0
    
    if i < n-1:
        ops_right = right[i+1] - sorted_nums[i] * (n-i-1)
    else:
        ops_right = 0
    
    hashmp[sorted_nums[i]] = ops_left + ops_right
for i in nums:
    print(hashmp[i])
import sys
import re
array = input()
new_pairs = re.findall(r'([-\d]+)\(([\d]+)\)', array)
res = '['
i, n = 0, len(new_pairs)
while i < n:
    key = new_pairs[i][0]
    val = int(new_pairs[i][1])
    idx = i + 1
    while idx < n and new_pairs[idx][0] == key:
        val += int(new_pairs[idx][1])
        idx += 1
    i = idx
    if i != n:
        res += str(key)+'('+str(val)+')'+',' 
    else:
        res += str(key)+'('+str(val)+')'+']' 
    
print(res)

#携程##算法##笔试#
全部评论
第二题换成前缀和也超了崩溃
1
送花
回复
分享
发布于 03-13 21:01 江苏
最后一题什么思路呀
点赞
送花
回复
分享
发布于 03-13 20:49 北京
秋招专场
校招火热招聘中
官网直投
携程没给机会笔试哎
点赞
送花
回复
分享
发布于 03-13 21:20 广东
方便问下楼主投的什么岗位吗
点赞
送花
回复
分享
发布于 03-16 13:21 湖南
携程不是测评吗?还是说测评+笔试?
点赞
送花
回复
分享
发布于 03-18 12:29 广东
楼主,笔试是四道编程题?有没有额外的八股题?单选题之类的?
点赞
送花
回复
分享
发布于 03-26 16:33 江苏

相关推荐

感觉前两题比较简单,后两题难度比较大,做完之后是100,100,20,0,也不知道能不能进面试第一题很简单,给一个长宽,给两个符号,让输出一个矩阵,要求符号交替出现,每个符号周围(上下左右)不能是和当前符号相同的,比较简单,相信各位大佬也都能A,就不细说了。第二题也不难,给一个正整数(非常长,可能有5000位),给一个k,给一个p,要求找到这个正整数中长度为k的一段数字的最大值,输出这个最大值%p的结果,也不很难。第三题看起来很简单,但是实际有难度。给一个数组,长度为n,再给q组数据,每组数据两个数l,r,代表左右边界,要求输出数组第l位一直乘到第r位的乘积%6。1相信各位牛友都能写出来,主要问题在于时间复杂度。如果使用最直接的方法算,n,q都到10^5时显然会超时,这也是一直卡在20%的原因。显然他是想让我们利用一些计算过的值,不要有太多重复计算,这可以大大减少时间复杂度,例如我们算过了10-20,在算10-21时直接用10-20的结果乘21就好了。最开始试图直接打表,写完发现内存爆了,此路不通。苦思冥想怎么能够实现重复利用,想到一种思路,我们可以分块,比如1-100000分成100块:1-1000、1000-2000、……、99000-100000,预先计算出每一段的结果,存起来,然后算q组数据的时候就可以利用了,比如0-2001,就可以利用1-1000、1000-2000这两段从而降低时间复杂度。但是想了太久了,最后也没写完,也不知道可不可行,哎,还是题写的太少了,菜还是得练,刷题去了这是鼠鼠做的第一个比较大的厂的笔试,本来还想着要不要推到下一批,想想算了,直接冲吧。也不知道能不能过欢迎牛友们一起交流,本人四月底才开始申请暑期实习,希望能和各位大佬们多交流,早日收到满意offer!
查看3道真题和解析 投递携程等公司6个岗位
点赞 评论 收藏
转发
3 15 评论
分享
牛客网
牛客企业服务