博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 1478. Allocate Mailboxes [Python]
阅读量:4090 次
发布时间:2019-05-25

本文共 928 字,大约阅读时间需要 3 分钟。

这题不友好啊,,需要找规律。按照提示的部分来思考,假设当前我只有一个邮箱,那没增加一个房子的情况下,如当前有x,y,z三个房子,邮箱放在y位置,x的位置是start;每多一个新的房子w,则总的距离增加就是w到y的距离。因为此时要么中心换为z,要么还是y,但是总的增加量还是不变的。(比如x->y:l1,y->z:l2,z->w:l3, 当只有x,y,z三个 houses的时候,距离为l1+l2, 增加w点后,不换中心,增加的距离是l2+l3, 换中心,则y->z的距离l2需要加入,w->z的距离l3的距离也需要加入,增加的量还是l2+l3。所以,增加的距离为w的index与start相加/2,(index + start)/2之后得到的坐标到index的距离。)好了,由此开始推断,前面的start到index里只放一个,剩下的使用recursion迭代。并在此过程中寻找最小值。 

class Solution:    def minDistance(self, house: List[int], k: int) -> int:        if len(house) == k:return 0        house.sort()        @functools.lru_cache(None)        def recursion(start, k):            if k >= (len(house) - start):                return 0            res = float('inf')            addlength = 0            for i in range(start, len(house)):                addlength += house[i] - house[(start+i)//2]                res = min(res, addlength + recursion(i+1, k-1))            return res        return recursion(0,k)

 

转载地址:http://eijii.baihongyu.com/

你可能感兴趣的文章
博士学位真的那么重要吗?上交大博士亲述科研心路,获 4 万高赞,网友:这是知乎最好的回答...
查看>>
GitHub Star 过万,这款神器必须安利!
查看>>
开源神器:可快速将真实物件复制粘贴到电脑上!
查看>>
开源神器:如何用一行代码快速下载 B 站等全网视频!
查看>>
它号称是全世界最好的翻译工具!
查看>>
一个 Java 顶级高手是怎样炼成的?(附思维导图与学习资料)
查看>>
《王者荣耀》发布的绝悟 AI,到底有多强...
查看>>
一位中国博士把整个 CNN 给可视化后,火了!
查看>>
18 禁警告!一万张照片投喂,让这个工具能自动画丁丁,数据集还开源了
查看>>
GitHub 发布重磅更新:你电脑上的 IDE 可以删了?!
查看>>
Google 出王炸!Meet 免费支持 100 人同时在线,与 Zoom 正面刚
查看>>
搞不懂 Java 虚拟机性能调优,是因为你还没看过这个!
查看>>
Google 对外开放的这份工程实践文档,我爱了...
查看>>
复旦大学邱锡鹏教授:一张图带你梳理深度学习知识脉络
查看>>
我的电脑不联网,很安全。黑客:你还有风扇呢!
查看>>
全球最大编程问答社区 Stack Overflow 宣布裁员 15%!
查看>>
这个被微软雪藏十几年的官方插件,没想到原来这么好用
查看>>
太赞了!GitHub 标星 2.4k+,《可解释机器学习》中文版正式开放!
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>