【第三届字节跳动青训营|刷题打卡】DAY2

5,001 阅读1分钟
  • 为了助力本届青训营课程的学习,青训营项目组为同学们精心挑选了练手习题 📖
  • 每两天发布一篇,包含选择题和实操题各一题(第二天将发布答案解析)🥳
  • 同学们可以在评论区留下你的解题过程并进行互动交流 ✍️

一、【多选】下列关于Join 运算不正确的是:

a. Nested Loop Join 不能使用索引做优化。
b. 如果左表太大,不能放入内存中,则不能使用 Hash Join。
c. 如果 Join 的一个输入表在 Join Key 上有序,则一定会使用 Sort Merge Join。
d. Broadcast Join 适用于一张表很小,另一张表很大的场景。

答案 & 解析:

a、b、c;
Nested Loop Join 可以使用索引优化(Index Nested Loop Join);
如果左表太大,不能放入内存,可以先对量表做分区,再对每个分区做 Hash Join (Parititioned Hash Join);
如果Join的一个输入表在Join Key上有序,也可以 Hash Join,具体使用哪种 Join 方式取决于优化器的代价估计结果。

二、给定一个正整数数组 arrs 和整数 K ,请找出该数组内乘积小于等于 k 的连续的子数组的个数,算法时间复杂度o(n)。

解析:

双指针思想,对于每个right, 不断单调的移动left,直到满足需求。

今天是刷题打卡第二天,大家加油吖 😉