网易2020校招笔试编程题回顾

把今天的记忆里面的笔试题的情况梳理一下,投递的是算法工程师:

题型总共分为选择题10*1  编程题10、20、20、30  问答题5*2

编程题:

1、倒数排序:给你一个数n,以及1-n的一个排列,让你根据这个全排列的位置找到这个倒数全排列这个位置的排列

例如:n= 3

全排列有  123 132 213 231 312 321  输入n=3 排列 123  输出 321   123对应位置1 让你输出倒数第一个位置的排列

思路:需要把两个放在一起对比一下发现规律  output_i = n + 1 - input_i

#encoding = 'utf-8'

import sys

if __name__ == "__main__":

    n = sys.stdin.readline().strip()
    L = sys.stdin.readline()

    L = [int(item) for item in L.strip().split(' ')]

    res = ''
    for item in L:
        res += str(int(n)+1-item) + " "
    
    print(res)

2、数字圆环

给你一个数n和一个数组,让你判断这个数组是否可以构成圆环,需要满足一个数左边的数+右边的数大于这个数

思路:首先对数组进行排序,除了最后一个数字,都满足相邻两个数大于自己,对于最后一个数字,交换最后两个数字,判断是否满足条件即可

# encodng = 'utf-8'

import sys

if __name__ == '__main__':

    n = int(sys.stdin.readline().strip())
    result = [int(line) for line in sys.stdin.realine().strip().split(' ')]
    
    for i in range(n):
        result.sort()
        if result[0] + result[-2] > result[-1]:
            print("YES")
        else:
            tmp = result[-1]
            result[-1] = result[-2]
            result[-2] = tmp
            
            if result[-2] < result[-1] +result[-3] and result[0] + result[-2] > result[-1]:
                print("YES")
            else:
                print("NO")

3、奇偶交换

 给你一个数组,如果ai+aj为奇数,则ai和aj互换,最终输出的数组由小到大

# encoding = 'utf-8'

import sys

if __name__ == "__main__":
    n = int(sys.stdin.readline().strip())

    line = sys.stdin.readline().strip()

    value = [int(item) for item in line]
    
    temp1 = [x for x in value if x%2 == 0]
    temp2 = [x for x in value if x%2!=0]

    if temp1 != [] and temp2 !=[]:
        value.sort()

    result = [str(x) for x in value]

    print((' '.join(result)))
    

4、优秀的01序列

 

问答题:

1、随机梯度下降原理?   梯度消失、梯度爆炸? 是什么以及怎么解决梯度消失和梯度爆炸?

2、说一下你知道的循环神经网络?介绍一种循环神经网络的 原理 结构 以及公式推导过程?

你可能感兴趣的:(秋招)