同花顺提前批笔试编程题

我投的是机器学习算法工程师岗位,不同岗位的题目貌似不一样

以下思路仅仅是我的个人解法,不保证正确,存在问题欢迎指正。

1. 计算准确率、召回率
直接根据准确率、召回率的定义进行计算即可

2. 最短路问题
经典的单源最短路问题,直接用狄克斯拉特算法求解

参考代码:
import heapq

def dijkstra(cost, start=0, end=25):
    heap = [(0, start)]
    visited = set()
    while heap:
        (cost, u) = heapq.heappop(heap)
        if u in visited:
            continue
        visited.add(u)
        if u == end:
            return cost
        for v in range(26):
            if v in visited:
                continue
            c = cost[u][v]
            next = cost + c
            heapq.heappush(heap, (next, v))
    return -1



3. 疑似双指针,但是出题人说的不是人话
读了好几遍题没读懂,主要是题目描述和示例不一致。最后写了一个双指针的方法去判断最长递增子序列。

参考代码:
def exist_k(arr, k):
    m = 1
    res = 1
    n = len(arr)
    for r in range(1, n):
        if arr[r] >= arr[r - 1]:
            m += 1
            res = max(res, m)
        else:
            m = 1
    return res >= k



4. 题目依然晦涩难懂

两次排序,第一次直接排序去计算中位数,第二次排序是按照题目中提到的买卖点判断方式进行排序,然后取前k个值
参考代码:
from functools import cmp_to_key def max_possible_k(arr, k):
    n = len(arr)
    sorted_arr = sorted(arr)
    m = sorted_arr[(n - 1) // 2]

    def cmp(x, y):
        if abs(x - m) > abs(y - m):
            return -1
        elif abs(x - m) == abs(y - m) and x > y:
            return -1
        else:
            return 1

    new_arr = sorted(arr, key=cmp_to_key(cmp))
    return new_arr[:k]


#笔经##同花顺##笔试题目##算法工程师#
全部评论
一样投了这个岗 题目基本都是深度学习的 还用的pytorch
1 回复
分享
发布于 2021-06-19 23:15
t4的代码出了点小问题,把import 和def 写到同一行了
点赞 回复
分享
发布于 2021-06-19 12:32
联想
校招火热招聘中
官网直投
我也这个岗,题目完全不一样
点赞 回复
分享
发布于 2021-06-19 18:10
楼主被通知面试了吗?我怎么笔试过了之后 还没收到面试?
点赞 回复
分享
发布于 2021-07-02 00:46
机器学期算法工程师的笔试,除了4道编程,还有些选择题吗?
点赞 回复
分享
发布于 2021-12-19 15:07

相关推荐

2 10 评论
分享
牛客网
牛客企业服务