首页 > 同花顺提前批笔试编程题
头像
鱼摆摆_
编辑于 2021-06-19 16:48
+ 关注

同花顺提前批笔试编程题

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

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

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]


全部评论

(5) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐