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

LeetCode每日一题,8-6

水果成篮3️⃣
本题给你两个数组fruits和baskets,对于fruits种的每个数,找到baskets中第一个大于等于fruits的值,然后baskets的该下标作废,最后返回有多少个fruit找不到对应的baskets。
用线段树维护区间最大值,然后对于每个fruits进行查询,重点是查询最左边的值。

class Solution {int N = (int) (1e5 + 10);Node[] tr = new Node[4 * N];class Node {int l, r;int val;}void build(int u, int l, int r,  int[] baskets) {tr[u] = new Node();tr[u].l = l;tr[u].r = r;tr[u].val = 0;if (l == r) {tr[u].val = baskets[l - 1];return;}int mid = l + r >> 1;build(u << 1, l, mid, baskets);build(u << 1 | 1, mid + 1, r, baskets);tr[u].val = Math.max(tr[u << 1].val, tr[u << 1 | 1].val);}int query(int u, int l, int r, int val) {// 如果当前节点的值小于要查询的值,直接返回0if (tr[u].val < val) {return 0;}// 如果当前节点区间完全在查询区间外,返回0if (tr[u].r < l || tr[u].l > r) {return 0;}// 如果是叶子节点且值满足条件if (tr[u].l == tr[u].r) {int pos = tr[u].l;tr[u].val = -1;  // 标记为已使用return pos;}int res = 0;int mid = (tr[u].l + tr[u].r) >> 1;// 先尝试左子树if (tr[u << 1].val >= val && l <= mid) {res = query(u << 1, l, Math.min(r, mid), val);}// 如果左子树没找到结果且右子树可能有解,尝试右子树if (res == 0 && tr[u << 1 | 1].val >= val && r > mid) {res = query(u << 1 | 1, Math.max(l, mid + 1), r, val);}// 更新当前节点的值tr[u].val = Math.max(tr[u << 1].val, tr[u << 1 | 1].val);return res;}public int numOfUnplacedFruits(int[] fruits, int[] baskets) {int n = fruits.length;int m = baskets.length;int res = n;build(1, 1, m, baskets);for (int i = 0; i < n; i++) {int val = fruits[i];
//            找到第一个大于等于val的位置int pos = query(1, 1, m, val);if(pos != 0)res --;}return res;}
}
http://www.lryc.cn/news/611486.html

相关文章:

  • List、ArrayList 与顺序表
  • 软考软件设计师考点总结
  • 模电知识点总结
  • 安卓雷电模拟器安装frida调试
  • mysql优化策略
  • 【Excel】通过Index函数向下拖动单元格并【重复引用/循环引用】数据源
  • WinForm之ListView 组件
  • Ethereum: L1 与 L2 的安全纽带, Rollups 技术下的协作与区别全解析
  • Vue计算属性详解2
  • 无法解析 CentOS 官方镜像源的域名
  • 微软的BitLocker加密
  • 输电线路防外破声光预警装置 | 防山火/防钓鱼/防施工安全警示系统
  • 豆包新模型与PromptPilot工具深度测评:AI应用开发的全流程突破
  • UE编辑器相机窗口运行时相机fov 大小不一致
  • 嵌入式学习的第四十四天-ARM
  • 安装 cuda 版本 PyTorch(2025)
  • 【计算机网络】王道考研笔记整理(3)数据链路层
  • Python 通过Playwright+OpenCV破解滑动验证码 实例
  • 企业级MCP部署实战:从开发到生产的完整DevOps流程
  • 007 前端( JavaScript HTML DOM+Echarts)
  • 深入浅出 RabbitMQ - 主题模式(Topic)
  • 计算机网络:一个 IP 地址可以同时属于 A 类、B 类或 C 类吗?
  • 计算机视觉的四项基本任务辨析
  • 力扣148:排序链表
  • # Kafka 消费堆积:从现象到解决的全链路分析
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-邮箱重置密码
  • python-自定义抠图
  • Python日志记录库——logaid
  • mq_unlink系统调用及示例
  • RC和RR的区别