8.20网易笔试

4道编程+1道简答(简答里面两个小问题好鸡贼

1. 一个长度为n的数组,里面的数字包含从1-n,每个数字仅有一个。操作为每次可以选择一个数+1同时选择另外一个数-1,但是每次操作后数组中仍然是每个数字有且仅有一个。问最少多少次操作后将数组转换成一个非降序数组。
思路:本来打算用一个结果数组统计多少次加多少次减,但是发现思路不太对,直接跳过了,最后没时间回来看过来0%

2. 一个string里面只包含r\e\d三种字符,判断有多少组合中r\e\d的出现次数相等。
思路:写了一个函数用来判断当前切片字符子串中的red出现次数是否相等,用异或判断的。然后用size为3、6、9...的滑动窗口去遍历字符串,但是最后通过率为0,很疑惑。代码我贴出来吧。。。
string = input()
length = len(string)
def equal(flag,s):
    if flag:
        res = "red"
    else:
        res = ""
    ans = 0
    for char in s+res:
        ans ^= ord(char)-ord('0')
    return ans == 0

flag = True
size = 3
res = 0
while length >= size:
    i,j = 0,size-1
    while j<length:
        if equal(flag,string[i:j+1]):
            res+=1
        i+=1
        j+=1
    size+=3
    if flag:
        flag = False
    else:
        flag = True
print(res)

3. 长度为n的数组中选择k个数字的位与最大。
思路:直接用heapq选择k个最大的数,做位与操作,通过了38%。

4. 输入三个数,a,b,n。前两个为前两个项的数,后面每个数都是前两个数的乘积的平方,输出第n个数,如果超了1e9+7要取余。
思路:用两个参数迭代,最后一个结果取余,但是overflow了,最后通过了8%。

总结:网易笔试真的是把我按在地上摩擦。


#网易笔试##网易#
全部评论
我有点疑惑,第一道题不应该是最少移动两次吗?就第一个和第三个操作两次就可以了,我只那么写的,最后过了百分之十,其他的我都把代码写出来了,但是代码都只过了百分之二十.....
点赞 回复 分享
发布于 2022-08-20 23:24 北京

相关推荐

八极星:有什么不能问的,(/_\),这又不是多珍贵的机会,你有什么可失去的
点赞 评论 收藏
分享
评论
点赞
13
分享

创作者周榜

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