当前位置: 首页 > news >正文

知名企业网站人才招聘情况台州临海市建设局网站

知名企业网站人才招聘情况,台州临海市建设局网站,广州门户网站制作公司,高水平大学建设大学网站Leetcode 3479. Fruits Into Baskets III 1. 解题思路2. 代码实现 题目链接:3479. Fruits Into Baskets III 1. 解题思路 这一题思路本质上就是考察每一个水果被考察时找到第一个满足条件且未被使用的basket。 因此,我们只需要将basket按照其capacit…
  • Leetcode 3479. Fruits Into Baskets III
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3479. Fruits Into Baskets III

1. 解题思路

这一题思路本质上就是考察每一个水果被考察时找到第一个满足条件且未被使用的basket。

因此,我们只需要将basket按照其capacity进行排序,此时,考察每一个水果时,我们用二分法即可快速找到某一个坐标idx满足其后任意一个箱子都可以用于盛放该水果。此时,我们就要从对应的这些篮子当中找到其原始的坐标最小的位置即可。而这就是一个典型的segment tree的问题了。

对于segment tree,网上已经有不少相关的介绍了,我自己也写过一篇小文章作为备忘(经典算法:Segment Tree),因此这里就不过多展开了,有兴趣的读者可以自行去了解一下。

2. 代码实现

给出python代码实现如下:

class SegmentTree:def __init__(self, arr):self.length = len(arr)self.tree = self.build(arr)def feature_func(self, *args):return min(args)def build(self, arr):n = len(arr)tree = [0 for _ in range(2*n)]for i in range(n):tree[i+n] = arr[i]for i in range(n-1, 0, -1):tree[i] = self.feature_func(tree[2*i], tree[2*i+1])return treedef update(self, idx, val):idx = idx + self.lengthself.tree[idx] = valwhile idx > 1:self.tree[idx // 2] = self.feature_func(self.tree[idx], self.tree[idx ^ 1])idx = idx // 2returndef query(self, lb, rb):lb += self.length rb += self.lengthnodes = []while lb < rb:if lb % 2 == 1:nodes.append(self.tree[lb])lb += 1if rb % 2 == 0:nodes.append(self.tree[rb])rb -= 1lb = lb // 2rb = rb // 2if lb == rb:nodes.append(self.tree[rb])return self.feature_func(*nodes)class Solution:def numOfUnplacedFruits(self, fruits: List[int], baskets: List[int]) -> int:n = len(fruits)ordered_baskets = sorted([(cap, idx) for idx, cap in enumerate(baskets)])ordered_baskets_capacity = [x[0] for x in ordered_baskets]ordered_baskets_index = [x[1] for x in ordered_baskets]segment_tree = SegmentTree(ordered_baskets_index)ans = 0for fruit in fruits:idx = bisect.bisect_left(ordered_baskets_capacity, fruit)if idx >= n:ans += 1continueleft_most_avaliable = segment_tree.query(idx, n-1)if left_most_avaliable >= n:ans += 1continuebasket = (baskets[left_most_avaliable], left_most_avaliable)idx = bisect.bisect_left(ordered_baskets, basket)segment_tree.update(idx, n)return ans

提交代码评测得到:耗时2398ms,占用内存43.9MB。

http://www.yayakq.cn/news/884189/

相关文章:

  • wordpress全站cdn sslwordpress trego
  • 自动做PPT的网站网址经营是什么
  • 小贷做网站怎样制作微信小程序
  • 怎么做网站营销唱片公司网站模板
  • 分类信息网站开发浙江建设网站首页
  • 合肥市做外贸网站的公司wordpress altair
  • 山东省建设教育集团网站首页163网站视频动做
  • 发布网站需要备案吗网站如何添加内容
  • 景县网址建站建立企业网站的好处
  • 青岛网站厉害的公司wordpress 自助建站
  • 学做网站可以赚钱吗广告设计专业烧钱吗
  • 做平面的公司网站dede 网站名称 空的
  • 热 综合-网站正在建设中-手机版淄博网站开发公司
  • 网站网页翻页设计最专业的礼品网站实例
  • 电子商务网站开发进什么科目做网站找那家公司好
  • 网站免费正能量软件直播wordpress侧边二级导航
  • 职称论文写作网站湖南建设局网站
  • 无锡市住房建设局网站大良做网站的公司
  • 用php写的网站有哪些小程序问答库
  • 佛山外贸网站建设资讯盐城做网站多少钱
  • 信阳网站建设的费用上海网站群建设
  • 3340网站建设与管理网站开发需要懂哪些
  • 中国的网站做欧美风如何做网站图标
  • 大悟网站建设网站建设需求分析调研表
  • 西安seo网站公司工业软件界面设计
  • 义乌兼职网站建设建立有效的什么机制
  • 网站开发和游戏开发哪个好建筑网站、
  • 东莞企业网站排名优化优酷网站模板下载
  • 个人网站建设一般流程wordpress 搜索分页
  • 怎么把网站设置为主页面网络游戏制作软件