自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 [某度信息流]SQL164,2021年11月每天新用户的次日留存率

那么只要用户注册表中的行能链接上用户登陆表的天数减一就代表这个用户第二天还继续登陆,即我们要求的用户留存。首先找出用户的注册日期,即date(min(in_time)) 转成date形式。第一张表user_reg表,拿出用户第一天注册时间,通过uid聚合。第二张表user_log表,链接用户每次登陆过的时间。建立两个辅助表,我先放代码,然后进行解释。

2024-09-03 23:10:44 392

原创 [高频sql第602题],谁拥有最多的好友

`ORDER BY num DESC`:按照好友数量降序排序,这样拥有最多好友的用户会排在最前面。编号为 3 的人是编号为 1 ,2 和 4 的人的好友,所以他总共有 3 个好友,比其他人都多。- `LIMIT 1`:限制结果只返回顶部的一条记录,即拥有最多好友的用户。- `GROUP BY id`:按照用户ID进行分组,看每个id有多少请求。编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。生成的测试用例保证拥有最多好友数目的只有 1 个人。获取所有请求者和接收者的id,并罗列到一起。

2024-08-20 18:37:56 281

原创 [高频sql50ti]第1484题,按日期分组销售产品

5. 长度限制:`GROUP_CONCAT()`的结果长度受限于系统变量`group_concat_max_len`,默认值为1024字节。对于2020-05-30,出售的物品是 (Headphone, Basketball, T-shirt),按词典序排列,并用逗号 ',' 分隔。对于2020-06-01,出售的物品是 (Pencil, Bible),按词典序排列,并用逗号分隔。- SEPARATOR:可选,用于指定连接字符串的分隔符,默认为逗号`,`。- DISTINCT:可选,用于去除重复值。

2024-08-19 13:15:45 693

原创 [高频sql50题]第1731题,每位经理的下属员工数量

Hercy 有两个需要向他汇报的员工, 他们是 Alice and Bob. 他们的平均年龄是 (41+36)/2 = 38.5, 四舍五入的结果是 39.编写一个解决方案来返回需要听取汇报的所有经理的 ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。该表包含员工以及需要听取他们汇报的上级经理的 ID 的信息。对于此问题,我们将至少有一个其他员工需要向他汇报的员工,视为一个经理。employee_id 是这个表中具有不同值的列。

2024-08-17 17:08:48 366

原创 [leetcode hot 150]第二百三十题,二叉搜索树中第k小的元素

要找到二叉搜索树中的第 k 小的元素,可以使用中序遍历(即先访问左子树,然后是根节点,最后是右子树)。在中序遍历过程中,会按照从小到大的顺序访问所有节点。二叉搜索树(BST)有一个特性:对于树中的任何节点,其左子树上的所有节点的值都小于该节点的值,而其右子树上的所有节点的值都大于或等于该节点的值。利用这个特性,我们就能轻松找到第k个最小元素。,请你设计一个算法查找其中第。小的元素(从 1 开始计数)。给定一个二叉搜索树的根节点。

2024-07-30 14:34:19 214

原创 [高频 SQL 50 题(基础版)]第一千零七十五题,项目员工1️⃣

第一个项目中,员工的平均工作年限是 (3 + 2 + 1) / 3 = 2.00;第二个项目中,员工的平均工作年限是 (3 + 2) / 2 = 2.50。2、对新表在project_id上进行group by 然后求experience_yaers的avg。这张表的每一行表示 employee_id 的员工正在 project_id 的项目上工作。1、左链接project表和Employee表,通过employee_id。主键为 (project_id, employee_id)。查询结果的格式如下。

2024-07-28 17:14:28 304

原创 [高频 SQL 50 题(基础版)]第一千六百三十三题,各赛事的用户注册率

将Register表对contest_id进行group by计算人数,然后除以users的总人数,即可求出参与率,最后令percentage降序排列,contest_id升序排列。所有用户都注册了 208、209 和 210 赛事,因此这些赛事的注册率为 100% ,我们按 contest_id 的降序排序加入结果表中。(contest_id, user_id) 是该表的主键(具有唯一值的列的组合)。user_id 是该表的主键(具有唯一值的列)。该表中的每行包含用户的 ID 和他们注册的赛事。

2024-07-27 11:06:49 461

原创 [高频sql50题(基础版)]第一千二百八十题,学生们参加各科测试的次数

这个查询将返回一个包含每个学生在每个科目上的考试次数的结果集,即使学生没有参加某个科目的考试(在这种情况下,考试次数将为 0)。这张考试表的每一行记录就表示学生表里的某个学生参加了一次科目表里某门科目的测试。Alice 参加了 3 次数学测试, 2 次物理测试,以及 1 次编程测试;Bob 参加了 1 次数学测试, 1 次编程测试,没有参加物理测试;查询出每个学生参加每一门科目测试的次数,结果按。学生表里的一个学生修读科目表里的每一门科目。该表内的每一行都记录有学校一名学生的信息。查询结构格式如下所示。

2024-07-15 22:45:26 635 1

原创 [高频 SQL 50 题(基础版)]第一千六百六十一题,每台机器的进程平均运行时间

(machine_id, process_id, activity_type) 是当前表的主键(具有唯一值的列的组合)。机器 2 的平均耗时: ((4.512 - 4.100) + (5.000 - 2.500)) / 2 = 1.456。'start' 代表该进程在这台机器上的开始运行时间戳 , 'end' 代表该进程在这台机器上的终止运行时间戳。平均耗时通过计算每台机器上所有进程任务的总耗费时间除以机器上的总进程数量获得。activity_type 是枚举类型 ('start', 'end')。

2024-07-14 10:50:40 988

原创 [高频SQL50题(基础版)]第一千五百八十一题,进店却未进行交易的顾客

在 2 次访问中,他们没有进行任何交易,在 1 次访问中,他们进行了 3 次交易。ID = 23 的顾客曾经逛过一次购物中心,并在 ID = 12 的访问期间进行了一笔交易。ID = 9 的顾客曾经逛过一次购物中心,并在 ID = 13 的访问期间进行了一笔交易。ID = 30 的顾客曾经去过购物中心,并且没有进行任何交易。ID = 96 的顾客曾经去过购物中心,并且没有进行任何交易。4. 按顾客ID进行分组,并统计每个顾客未进行交易的访问次数。2. 找到所有的交易记录。输入: Visits。

2024-07-10 18:59:04 388

原创 [高频 SQL 50 题(基础版)]第五百九十五题,大的国家

这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。如果一个国家满足下述两个条件之一,则认为该国是。是该表的主键(具有唯一值的列)。的国家名称、人口和面积。返回结果格式如下例所示。

2024-07-10 13:35:36 300

原创 [高频SQL50题(基础版)]第五百八十四题,寻找用户推荐人

但是问题在于,没考虑到referee_id=null的情况,因为sql不同于java,当为null时只判断2是不可以的,所以加上下面的语句。这道题有很大的难度,因为要考虑SQL优化,只想简单的语句是会超出时间限制的,因为referee_id可能会很复杂。这里虽然逻辑是对的,但是会超出时间限制,所以还是要优化sql修改代码。该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。在 SQL 中,id 是该表的主键列。我们看一下前面时间少的答案是怎么做的。这里虽然通过了,但是时间太长了。

2024-07-10 10:57:59 383

原创 [高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

low_fats 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品是低脂产品,'N' 表示不是低脂产品。recyclable 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品可回收,而 'N' 表示不可回收。没什么难度,作为基础题五十题的第一题练手,现在也开始陆续写一些SQL,作为记录,和leetcode一起,大家都加油。编写解决方案找出既是低脂又是可回收的产品编号。是该表的主键(具有唯一值的列)。

2024-07-10 00:01:48 347

原创 [leetcode hot 150]第二十三题,合并K个升序链表

这题虽然是困难题,但是思路很清晰,很好理解,主要借助最小堆,因为最小堆有着将最小的元素置为堆顶的性质,所以每次取最小值时将最小堆的头推出即可。并且使用dummy作为结果的头结点返回。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。

2024-07-06 21:04:35 290

原创 [leetcode hot 150]第一百三十题,被围绕的区域

本题关键:只要这个区域有一个点在边界上,那么这个区域肯定不能被围绕,除了边界的区域其他所有区域都是被围绕的,改为X。

2024-07-06 20:11:24 398

原创 [leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为。初始状态下,所有 next 指针都被设置为。可以使用层序遍历来解决这个问题。

2024-07-05 10:22:10 248

原创 [leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组。解决这个问题的关键是要找到尽可能多的重叠区间。处射出一支箭,若有一个气球的直径的开始和结束坐标为。你不知道气球的确切 y 坐标。弓箭一旦被射出之后,可以无限地前进。一支弓箭可以沿着 x 轴从不同点。返回引爆所有气球所必须射出的。可以射出的弓箭的数量。

2024-07-03 23:00:04 312

原创 [leetcode hot 150]第三题,无重复字符的最长子串

可以使用"滑动窗口"的方法来解决这个问题。,请你找出其中不含有重复字符的。

2024-07-03 21:31:31 339

原创 [leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差

差值是一个正数,其数值等于两值之差的绝对值。给你一个二叉搜索树的根节点。

2024-06-30 11:33:45 220

原创 [leetcode hot 150]第一百六十七题,两数之和Ⅱ

你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。如果设这两个数分别是。的形式返回这两个整数的下标。以长度为 2 的整数数组。重复使用相同的元素。

2024-06-30 10:06:15 319

原创 [leetcode hot 150]第一百二十二题,买卖股票的最佳时机Ⅱ

在每一天,你可以决定是否购买和/或出售股票。你也可以先购买,然后在。

2024-06-29 22:25:13 220

原创 更正:VMWARE出现错误关闭Hyper-V会导致Docker Desktop报错

总结:Docker Desktop无法与VMWARE同时使用,建议使用Docker Desktop更方便。运行bcdedit /set hypervisorlaunchtype auto。之前使用VMWARE时出现错误,当时在服务处将《HV主机服务》关闭,并使用命令。造成Docker Desktop无法使用。重启电脑后发现HV主机服务已自动开启。注意这里最后不是on也不是start。这时Docker恢复正常。

2024-06-26 17:05:27 441

原创 [leetcode hot 150]第十五题,三数之和

首先需要对数组进行排序。这是因为需要找到所有和为 0 的三元组,而对数组进行排序可以帮助更容易地识别这些三元组。指针处的元素之和是否等于 0。如果等于 0,我们将把这个三元组添加到。如果和大于 0,我们将把指针。与前一个迭代中的元素相同,将跳过当前迭代。答案中不可以包含重复的三元组。从数组第二个元素开始,指针。如果和小于 0,将把指针。,判断是否存在三元组。从数组开头开始,指针。

2024-06-20 22:11:41 461

原创 [leetcode hot 150]第十一题,盛水最多的容器

初始化分别位于高度数组开始和结束处的左右两个指针。计算指针当前位置的两行之间的面积。如果当前面积较大,更新最大面积。将高度较小的指针移向另一个指针。

2024-06-20 21:21:55 277 1

原创 解决:VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware

关闭 Hyper-V: 使用快捷键"win+R"打开运行窗口,输入"services.msc"并确定,打开本地服务; 找到《HV主机服务》,双击打开,将启动类型设置为禁用。 通过命令关闭 Hyper-V: 使用快捷键"win+x",然后选择以管理员身份运行 Windows Powershell(管理员),也可以选择“cmd”以管理员身份运行; 运行以下命令:bcdedit /set hypervisorlaunchtype off 重启电脑。

2024-06-20 17:11:22 5602

原创 [leetcode hot 150]第七十题,爬楼梯(动态规划)

题目:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?

2024-06-06 15:00:53 396

原创 [leetcode hot 150]第一百三十七题,只出现一次的数字Ⅱ

由于需要常数级空间和线性时间复杂度,常规的哈希表或者排序方法不适用。可以利用位运算来解决这个问题。如果某一位上的1的个数是3的倍数,那么该位在只出现一次的那个数字中是0,否则是1。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。对于每一位(bit),统计所有数字中该位上1的个数。请你找出并返回那个只出现了一次的元素。可以利用每个数字的二进制表示。外,其余每个元素都恰出现。

2024-06-05 10:13:30 220

原创 [leetcode hot 150]第一百三十六题,只出现一次的数字

根据题目关于空间、时间复杂度的要求,不能使用简单的遍历数组然后比较方式来解决这个问题,使用位运算。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。中存储的就是只出现一次的元素,因为成对出现的元素在异或运算中会互相抵消。异或运算有一个重要的性质:任何一个数字与自己异或的结果是0。遍历数组中的每一个元素,并将其与。

2024-06-05 09:51:16 231

原创 [leetcode hot 150]第六百三十七题,二叉树的层平均值

可以使用广度优先搜索 (BFS) 的方式来遍历二叉树的每一层,并计算每一层节点的平均值。这道题本身不难,重新复习一下层序遍历的思想,首先创建一个队列,将根节点加入队列。这道题不难理解,属于简单题,主要是联系一下层序遍历的写法,层序遍历是很重要的。建立当前队列大小数量的循环,队列中存储的就是这一层的所有节点,然后进行计算。, 以数组的形式返回每一层节点的平均值。如果当前出队的节点有左/右孩子,都加入队列中。给定一个非空二叉树的根节点。以内的答案可以被接受。

2024-06-04 13:42:07 307

原创 [leetcode hot150]第五十七题,插入区间

升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。重叠的区间,需要合并它们。重叠的区间直接加入结果列表。你可以创建一个新数组然后返回它。按照区间起始端点排序的区间列表。表示另一个区间的开始和结束。个区间的开始和结束,并且。

2024-06-03 16:05:57 326 1

原创 [leetcode hot 150]第一百零八题,将有序数组转换为二叉搜索树

由于给定的数组是有序的,可以利用这个特性来构建二叉搜索树。可以选择数组中间的元素作为根节点,然后递归地构建左子树和右子树。给定一个有序的整数数组,我们需要构建一棵平衡的二叉搜索树。平衡二叉树是指任意一个节点的左右子树的高度差不超过1。利用有序数组的特点,将树构建出来。排列,请你将其转换为一棵。题目:给你一个整数数组。

2024-06-02 00:10:37 291

原创 [leetcode hot 150]第一百九十一题,位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为。这道题比较简单,直接对最后一位进行与1的与操作,然后count++即可。

2024-05-29 18:09:37 242

原创 [leetcode hot150]第二百三十六题,二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(这个leetcode官方题解下面的树很正确的具象化了这个题的任务。可以使用递归的方式来解决这个问题。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-05-29 17:34:09 407 1

原创 [leetcode hot150]第一百五十一题,反转字符串中的单词

中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。

2024-05-28 22:06:31 159

原创 [leetcode hot 150]第四十九题,字母异位词分组

这道题想要把字母一样的单词都放到一个List里,这题的重点是巧用Sort,把字母顺序排列,相同顺序的字母就是在一个List里。- 将排序后的字符数组转换为字符串`key`,用作哈希表的键。- 创建一个哈希表`map`,用来存储字母异位词组。- 遍历每个字符串,将其转换为字符数组,并进行排序。- 如果哈希表中不包含该键,则新建一个列表作为值。- 最后,将哈希表的所有值转换为一个列表返回。是由重新排列源单词的所有字母得到的一个新单词。- 将原字符串添加到对应的列表中。- 首先,检查输入数组是否为空。

2024-05-26 11:26:57 190

原创 [leetcode hot 150]第七十三题,矩阵置零

题目:给定一个m x n的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用算法注意:原地算法,也就是说不能使用额外的矩阵来存储数据。

2024-05-24 16:13:48 188

原创 [leetcode hot 150]第五十题,计算Pow(x,n)

这种方式比直接计算 x^13 要高效得多,因为它只需要 O(log n) 次乘方和平方操作,而直接计算需要 O(n) 次乘法操作。- 奇数的最低位一定是 1,需要将当前的 x 乘入结果中,并将 n 减 1 来消去最低位的 1。4. 计算 x^13 = x^8 * x^4 * x。1. x^8 可以通过 (x^4)^2 来计算。2. x^4 可以通过 (x^2)^2 来计算。3. x^2 可以通过 x * x 来计算。2. 计算 x^4 = (x^2)^2。3. 计算 x^8 = (x^4)^2。

2024-05-24 15:41:33 312

原创 [leetcode hot150]第六十九题,x的平方根

思路:使用二分查找,通过(0,x)查找x平方根的位置。这道题最重要的是使用二分查找思想,思路比较清晰。不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。

2024-05-24 14:04:53 217

原创 [leetcode hot 150]第五十六题,合并区间

题目:以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。思路:这道题目要求合并一个区间数组中所有重叠的区间。

2024-05-23 22:26:50 426

原创 [leetcode hot 150]第一百六十二题,寻找峰值

我们需要找到一个峰值元素的索引。峰值元素是指其值严格大于左右相邻值的元素。如果有多个峰值元素,返回任意一个峰值元素的索引即可。,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回。那么首先我们要想到的是:给定一个整数数组。峰值元素是指其值严格大于左右相邻值的元素。,这意味着数组的两端被看作是负无穷大。根据分析,我觉得初步解题步骤为。你必须实现时间复杂度为。的算法来解决此问题。

2024-05-19 11:33:14 262

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除