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

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接

LeetCode_1767

二、题目描述

表:Tasks

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| task_id        | int     |
| subtasks_count | int     |
+----------------+---------+
task_id 具有唯一值的列。
task_id 表示的为主任务的id,每一个task_id被分为了多个子任务(subtasks),subtasks_count表示为子任务的个数(n),它的值表示了子任务的索引从1到n。
本表保证2 <=subtasks_count<= 20。

表: Executed

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| task_id       | int     |
| subtask_id    | int     |
+---------------+---------+
(task_id, subtask_id) 是该表中具有唯一值的列的组合。
每一行表示标记为task_id的主任务与标记为subtask_id的子任务被成功执行。
本表 保证 ,对于每一个task_id,subtask_id <= subtasks_count。

编写解决方案报告没有被执行的(主任务,子任务)对,即没有被执行的(task_id, subtask_id)。

以 任何顺序 返回即可。

三、目标拆解

四、建表语句

Create table If Not Exists Tasks (task_id int, subtasks_count int)
Create table If Not Exists Executed (task_id int, subtask_id int)
Truncate table Tasks
insert into Tasks (task_id, subtasks_count) values ('1', '3')
insert into Tasks (task_id, subtasks_count) values ('2', '2')
insert into Tasks (task_id, subtasks_count) values ('3', '4')
Truncate table Executed
insert into Executed (task_id, subtask_id) values ('1', '2')
insert into Executed (task_id, subtask_id) values ('3', '1')
insert into Executed (task_id, subtask_id) values ('3', '2')
insert into Executed (task_id, subtask_id) values ('3', '3')
insert into Executed (task_id, subtask_id) values ('3', '4')

五、过程分析

1、找出所有的任务对

2、连接Executed表找出没有没有被执行的任务对

六、代码实现

with recursive t1(task_id, subtask_id) as (select task_id, 1from tasksunion allselect t1.task_id, subtask_id + 1from t1 left join tasks t on t.task_id = t1.task_idwhere t1.subtask_id + 1 <= t.subtasks_count   -- 这里t1.subtask_id + 1是要限制递归新值最大不能超过子任务的个数)
select t1.task_id, t1.subtask_id
from t1
left join Executed e on e.task_id = t1.task_id and e.subtask_id = t1.subtask_id
where e.task_id is null;

七、结果验证

八、小结

1、思路是递归 + 左连接

2、从一个值得出多个值,考虑使用递归

3、MySQL的递归是recursive + CTE表达式 + union all/union + select语句,注意递归的结束条件

相关文章:

SQL,力扣题目1767,寻找没有被执行的任务对【递归】

一、力扣链接 LeetCode_1767 二、题目描述 表&#xff1a;Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…...

JavaScript数据类型- Symbol 详解

文章目录 前言1.唯一性2. 描述3. 作为对象属性键4. 全局注册6. 不可变性7. 隐式转换 前言 Symbol是ES6新增内容&#xff0c;代表创建后独一无二且不可变的数据类型&#xff0c;它主要是为了解决可能出现的全局变量冲突的问题 在JavaScript发展的过程中&#xff0c;其中的ES6带…...

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放

结合bv号 改成以下嵌入式代码&#xff08;自适应屏幕大小,取消自动播放&#xff09; <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…...

11.6 校内模拟赛总结

打的很顺的一场 复盘 7:40 开题&#xff0c;看到题目名很interesting T1 看起来很典&#xff0c;中位数显然考虑二分&#xff0c;然后就是最大子段和&#xff1b;T2 构造&#xff1f;一看数据范围这么小&#xff0c;感觉不是很难做&#xff1b;T3 神秘数据结构&#xff1b;T…...

Redis常用的五大数据类型(列表List,集合set)

简介 List 的特点&#xff1a;单键多值。底层实际是个双向链表&#xff0c;对两端的操作性能很高&#xff0c;通过索引下标的操作中间的节点性能会较差。 Redis 列表是简单的字符串列表&#xff0c;按照插入顺序排序。你可以添加一个元素到列表的头部&#xff08;左边&#xff…...

Ubuntu 20.04 部署向量数据库 Milvus + Attu

前言 最开始在自己的办公电脑&#xff08;无显卡的 windows 10 系统&#xff09; 上使用 Docker Desktop 部署了 Milvus 容器&#xff0c;方便的很&#xff0c; 下载 Attu 也很方便&#xff0c;直接就把这个向量数据库通过 Attu 这个图形化界面跑了起来&#xff0c;使用起来感…...

实现数传数据转网口(以太网)和遥控器SBUS信号转串口的功能

为了帮助你实现数传数据转网口&#xff08;以太网&#xff09;和SBUS信号转串口的功能&#xff0c;这里提供一个基本的框架。我们将使用STM32微控制器来完成这些任务。假设你已经具备了STM32的基本开发经验&#xff0c;并且已经安装了相应的开发环境&#xff08;如STM32CubeIDE…...

APP 后台广告位配置的关键要素与策略

在当今数字化营销的浪潮中&#xff0c;APP 作为重要的信息传播渠道&#xff0c;其后台广告位的配置显得尤为关键。这不仅影响着广告的展示效果&#xff0c;还直接关系到用户体验和平台收益。 首先&#xff0c;了解目标受众是配置广告位的基础。通过对 APP 用户的行为数据进行分…...

分布式数据库概述

分布式数据库概述 分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,这些节点通过网络相互连接,形成一个逻辑上统一的数据库系统。它旨在提高数据的可用性、可靠性、性能和可扩展性,是现代大数据和云计算环境下不可或缺的重要技术。 一、分布式数据库的核心…...

用通义灵码帮助实现校验bpmn.js当前画布上只能有一个开始节点的功能

最终代码&#xff1a; const elementRegistry this.bpmnModeler.get(elementRegistry);// 获取所有元素const allElements elementRegistry.getAll();// 过滤出开始节点const startEvents allElements.filter(element > element.type bpmn:StartEvent);// 校验开始节点的…...

OKHTTP断点续传

OKHTTP断点续传 文章目录 OKHTTP断点续传HTTP断点续传知识点RangeContent RangeEtag&If-Range&#xff08;文件唯一标志&#xff09; OKHTTP断点下载OKHTTP 简单短断点下载代码示例 Android 断点续传一直是面试的高频问点&#xff0c;这里从HTTP断点续传知识和Android续传思…...

软件测试学习笔记丨Flask操作数据库-ORM

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23426 什么是持久化 是把数据保存到可永久保存的存储设备中&#xff08;比如磁盘&#xff09;。持久化的主要应用是将内存中的数据存储在关系型数据库中&#xff0c;当然也可以存储在磁盘文件…...

ABAP 开发的那些小技巧

在对话框程序中的选择屏幕添加图标 要在选择屏幕中添加图标&#xff0c;其中包括参数&#xff1a; 在参数的选择文本中或选择选项(select-option)中写入 01 或选择选项&#xff1a; 您可以使用 01、02、03&#xff0c;依此类推&#xff0c;以获取不同的不同图标。 在运行时…...

电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)

问题:电科金仓(人大金仓)数据库链接异常,重启失败,查看日志如下: 致命错误: XX000: License file expired. 位置: PostmasterMain, postmaster.c:725 解决方法: 一、下载授权文件 根据安装版本在官网下载授权文件(电科金仓-成为世界卓越的数据库产品与服务提供商)…...

玩转「HF/魔搭/魔乐」平台

模型下载 Hugging Face 下载到 GitHub CodeSpace CodeSpace创建环境&#xff1a; # 安装transformers pip install transformers4.38 pip install sentencepiece0.1.99 pip install einops0.8.0 pip install protobuf5.27.2 pip install accelerate0.33.0下载internlm2_5-7b…...

鸿蒙系统的优势 开发 环境搭建 开发小示例

HarmonyOS是面向多智能终端、全场景的分布式操作系统,为消费者提供跨终端的无缝体验.华为开发者联盟从HarmonyOS应用设计、开发、测试、推广变现等环节全方位助力开发者。 开发者可以通过以下步骤学习鸿蒙系统的开发&#xff1a; 基础理论学习&#xff1a; 了解鸿蒙系统概述&a…...

python批量合并excel文件

当工作中发现有多个excel表需要进行相同的操作或者需要汇总在一起&#xff0c;一个一个处理太费时间&#xff0c;以下的python代码能够帮你解决这个问题~ import pandas as pd import os# 设置Excel文件所在的文件夹路径和合并文件的输出路径 folder_path D:\\Desktop\\dat…...

AWS S3 JavaScript SDK(v3)常用操作

安装 aws s3 sdk npm install aws-sdk/client-s3配置 创建 ~/.aws/credentials 文件&#xff0c;添加以下配置项&#xff1a; [default] aws_access_key_id<...> aws_secret_access_key<...> region<...>S3 SDK常用桶操作 获取桶列表 import {S3Client,…...

数据结构——图的基本操作

文章目录 1.图2.图的结构体定义3.图的初始化4.添加顶点、删除顶点4.1添加顶点4.2删除顶点 5.添加边、删除边5.1添加边5.2删除边 6.打印图7.main函数 在生命旅途中&#xff0c;我们就像是一个个节点&#xff0c;被无数看不见的边相连。每一次的相识与相离&#xff0c;都在这张巨…...

掌握全球速递:在表格中高效利用国际快递公式查询快递

在当今全球化的商业环境中&#xff0c;国际快递服务已成为连接世界各地企业与个人的重要桥梁。无论是跨国企业间的货物运输&#xff0c;还是个人用户的海外购物需求&#xff0c;国际快递都扮演着不可或缺的角色。然而如何快速准确地获取大量国际快递的物流轨迹成为了一个挑战。…...

python基于Hadoop的就业推荐系统的设计与实现 Spark+Hadoop+Hive 大数据 深度学习 机器学习

前言随着就业市场信息不对称问题日益突出&#xff0c;开发高效的智能就业推荐系统 成为当务之急。本研究基于Hadoop生态系统&#xff0c;设计并实现了一套面向求职者和招聘企业的智能推荐系统。系统采用分布式架构&#xff0c;后端基于Django框架实现业务逻辑处理&#xff0c;前…...

基于Phi-4-mini-reasoning的智能运维异常检测系统

基于Phi-4-mini-reasoning的智能运维异常检测系统 1. 运维监控的痛点与智能化需求 运维团队每天都要面对海量的日志数据、监控指标和系统告警。传统监控系统往往只能做到简单的阈值告警&#xff0c;当系统出现异常时&#xff0c;运维人员需要手动翻阅成千上万条日志&#xff…...

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试

GLM-4.1V-9B-Base开发入门&#xff1a;PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中&#xff0c;我们经常遇到一个典型问题&#xff1a;本地机器性能不足&#xff0c;无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...

第4章,[标签 Win32] :SysMets3 程序讲解01

专栏导航 上一篇&#xff1a;第4章&#xff0c;[标签 Win32] &#xff1a;SysMets3 程序代码 回到目录 下一篇&#xff1a;第4章&#xff0c;[标签 Win32] &#xff1a;SysMets3 程序讲解02&#xff0c;iVertPos 本节前言 对于本节所讲解的知识&#xff0c;有可能&#xf…...

物理引擎核心原理拆解:GJK算法如何用Support函数取代SAT检测

物理引擎核心原理拆解&#xff1a;GJK算法如何用Support函数取代SAT检测 在实时物理模拟的世界里&#xff0c;碰撞检测算法的效率直接决定了虚拟世界的真实感与流畅度。当两个刚体在三维空间中高速运动时&#xff0c;传统分离轴定理&#xff08;SAT&#xff09;需要检测多达15组…...

IP查询API性能评测指南:从响应时间到QPS的完整评估方法

在广告投放、反作弊、内容风控、日志分析等系统中&#xff0c;IP地理位置查询通常是高频、基础、不可或缺的环节。然而&#xff0c;很多团队在技术选型时往往停留在“能查到就行”的层面&#xff0c;忽视了其对系统性能、稳定性与长期成本的影响。 本文从技术评估角度出发&…...

快速原型构建遇阻?用快马AI一键绕过npm error 128,聚焦核心功能验证

最近在尝试用Node.js快速验证一个Web服务原型时&#xff0c;遇到了烦人的npm error code 128问题。这个错误通常和Git仓库权限相关&#xff0c;会直接卡住依赖安装流程。经过一番折腾&#xff0c;我总结出一套在InsCode(快马)平台快速绕开这个坑的实践方案&#xff0c;分享给同…...

开箱即用!Qwen-Image-2512-SDNQ Web服务快速体验指南

开箱即用&#xff01;Qwen-Image-2512-SDNQ Web服务快速体验指南 1. 五分钟了解Qwen-Image-2512-SDNQ Web服务 你是否遇到过这样的场景&#xff1a;需要快速生成一张概念图&#xff0c;但打开专业设计软件太麻烦&#xff1f;或者想尝试AI绘画&#xff0c;却被复杂的模型部署步…...

效率提升秘籍:用快马AI一键生成nt动漫角色管理模块代码

最近在开发一个nt动漫相关的项目&#xff0c;其中角色管理模块是必不可少的部分。这个模块需要实现角色列表展示、详情查看、新增、编辑和删除等功能。传统开发方式下&#xff0c;光是搭建这些基础功能就要花费不少时间。不过我发现用InsCode(快马)平台可以快速生成这些重复性高…...

从单工具到插件集:在Coze IDE里用Python/Node.js打造你的专属工具链

从单工具到插件集&#xff1a;在Coze IDE里用Python/Node.js打造你的专属工具链 在当今快速发展的AI应用开发领域&#xff0c;开发者们不再满足于简单的API调用和单一功能实现。随着业务逻辑的复杂化&#xff0c;如何高效地构建、管理和部署一系列相互关联的工具链&#xff0c;…...