数美22春招算法题

在这里插入图片描述

# 贪心
def func(arr):
    maxp = 0
    end = 0
    step = 0
    for i in range(len(arr)-1):
        maxp = max(maxp, i + arr[i])
        if end == i:
            step = step+1
            end = maxp
    return step

在这里插入图片描述

没想出来,谁会欢迎分享

在这里插入图片描述

# 优先队列使用堆排序
def func(arr):
    n, w, k = arr[0][0], arr[0][1], arr[0][2]
    # 构建(cost, profit)堆,python堆默认按第一个元素排列
    cost = [(arr[1][i], arr[2][i]) for i in range(len(arr[1]))]
    profit = []
    heapq.heapify(cost)
    for i in range(k):
        while len(cost) != 0 and cost[0][0] <= w:
            num = heapq.heappop(cost)
            # python只有小顶堆,所以取负值构建大顶堆
            heapq.heappush(profit, -num[1])
        if len(profit) == 0:
            return w
        w -= heapq.heappop(profit)
    return w

在这里插入图片描述

def func(f):
    inf = f.readlines()
    # 存矩阵
    log = []
    # 活跃次数
    a_times = len(inf)
    # 熵
    entropy = 0
    for i in range(a_times):
        log.append(inf[i].rstrip('\n').split(' '))
    log = np.array(log)
    wifimac = log[:, [1]].reshape(-1)
    wifimac_l = set(wifimac)
    for i in wifimac_l:
        sum = wifimac[wifimac == i].size
        probility = sum/a_times
        entropy -= probility*math.log(probility, 2)
    print('deviceld1:' + str(entropy))

感谢原博主分享题目
原链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值