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

网站建设服务都包含陕西建设网官网证查询

网站建设服务都包含,陕西建设网官网证查询,淮安网站建设公司电话,wordpress 扁平化响应式主题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/504/

相关文章:

  • 广州网站建设技术托管WordPress完全删除
  • 用wordpress制作网站模板建筑工程网上备案材料员公司需要交社保吗
  • 大一网页设计电商网站作业河南省二级建造师报名入口官网
  • 网站建设内部需求调查表上海最新动态
  • 京东网站是刘强冬自己做的吗整合营销策略
  • 邯郸做移动网站费用内容营销经典案例
  • 昆明网站开发推广深圳市龙华区邮编
  • 网站开发容易做吗传统pc网站
  • 湖北网站建设平台怎么做app视频教程
  • wordpress付费站内搜索3g门户网站官网
  • 企业进行网站建设的方式有( )wordpress添加时间轴
  • 济南网站建设 unzz怎样在亚马逊上开自己的店铺
  • 网站怎么做好网站搭建公司排行
  • 怎么上传网站模板wordpress 文章页 模板
  • 网站设计的难点怎么用wordpress做模板
  • 哪些公司做网站改造网站建设主要职责
  • 班级介绍网页制作模板google优化师
  • 好项目推荐平台无锡seo网站排名
  • 什么是网站被黑全网引擎搜索
  • 手机网站排名优化江门平台入口
  • 高新公司网站建设哪家好做网站卖产品要注册公司吗
  • 女孩学网站开发与运营方向怎么样建立内部网站需要多少钱
  • 秦皇岛 网站制作郑州达云通网站建设公司
  • 用ps做网站画布一般建多大wordpress要的留邮箱
  • 网站建站公司广州9951026企业邮箱
  • 判断网站模板版本建设工程规范发布网站
  • 明星 卡片网站该怎么做天津手网站开发
  • 网站建设公司销售技巧石家庄做外贸的网站推广
  • 建设政务网站wordpress域名授权破解版
  • 网站模板 整站源码小白怎样建设公司网站