自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曹健的博客

极度专注的工作

  • 博客(79)
  • 收藏
  • 关注

原创 hivesql求首次曝光用户数+用户留存数(附测试数据)

如题,求首次曝光用户数和用户留存数,表t_stay有两个字段,分别是用户id和曝光时间,有曝光就会生成一条纪录。表中存的是历史所有的数据。需求是得到如下表格的结果: 首次曝光人数,是在dt这一天,是用户在历史中的首次曝光。 次1日留存人数,是dt这天首次曝光的这些人,在次1日有多少留存人数。 注意t_stay是历史所有数据、我们想要看的数据的时间范围是2020-01-01到2020-01-30,也就是说我们的结果要有30条记录(30行)。 dt 首次曝光人数 次1日留存人数 次2.

2020-11-07 10:51:22 1131

原创 分析一道sql题:同一用户同一位置停留时间合并

数据如下: c1,c2,c3,c4 userA,locationA,2018-01-01 08:00:00,60 userA,locationA,2018-01-01 09:00:00,60 userA,locationB,2018-01-01 10:00:00,60 userA,locationA,2018-01-01 11:00:00,60 目标: userA,locationA,2018-01-01 08:00:00,120 userA,locationB,2018-01-01 10:00:0

2020-11-01 11:27:58 756 1

原创 hive常见面试题——求连续活跃天数

真的遇到了多次,很高频的sql题。 原始数据: uid,active_dt 1 20200101 1 20200102 1 20200103 1 20200105 1 20200107 2 ... 想要的结果是这样的:uid,active_dt,连续活跃的第几天 1 20200101 1 1 20200102 2 1 20200103 3 1 20200105 1 1...

2020-06-15 10:15:08 1858

原创 使用hive求共同好友

一个mapreduce的经典题目——求共同好友,目前网上还没有人用hive实现,我来用hive算一下。 一、数据准备 create table friends(people string,friends string); insert into table friends(people,friends) values('A','B,C,D,F,E,O,J'); insert into table friends(people,friends) values('B','A,C,E,K'),('C','

2020-05-28 21:31:15 2388

原创 join算法整理

学习doris过程中看到一篇博客https://blog.bcmeng.com/post/doris-colocate-join.html,里面提到了很多种join。 首先,根据sql语法有这些: inner join、full outer join、left join、left semi join、anti join。 常见join算法有这几种: nested loop join:嵌套循环连接,就是用双层for循环。时间复杂度O(A*B)。 hash join:小表join大表时,扫描小表,根据

2020-11-08 10:41:34 1068

原创 sql求所有分数不低于80分的学生+所有分数高于平均分的学生

假如成绩表t有学生student、科目project、成绩grade三个字段 1.求所有分数不低于80分的学生 方法1: select student from t where student not in (select student from t where score<80) group by student 方法2: select student,min(score) as min_score from t group by student having min_score&g

2020-11-07 11:22:07 2297

原创 hadoop启动错误:Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use: bind;

想用hive测试几个sql语句发现hadoop启动遇到问题,datanode起不来了,报错:Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use: bind; For more details see: http://wiki.apache.org/hadoop/BindException。 百度一下发现是端口被占用了,所以在配置文件hdfs-site.xml中修改端口号,增加如下内容: &l.

2020-11-07 09:33:14 1803

原创 flink学习——批处理wordcount和流处理wordcount

1.使用maven构建flink项目 本地需要java和scala,我已经装好了。 我的pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mav

2020-10-27 11:30:25 370

原创 hivesql中count distinct为什么可以用groupby优化

首先,用我本地的单机版hive建一张测试表,虽然不能模拟大数据量,但是足够说明问题了,准备数据如下: -- count distinct测试 create table count_distinct_test(id int,name string); insert into count_distinct_test values(1,'a'),(2,'a'),(3,'a'),(4,'b'),(5,'b'),(6,'c'),(7,'d'),(8,'e'),(9,'f'),(10,'g'); expla

2020-10-20 17:27:37 885

原创 hivesql——求最大在线人数

数据准备: create table login_logout(userid int,logintime string,logouttime string); insert into login_logout values(1,'2020-10-01 11:11:11','2020-10-01 13:11:12'),(2,'2020-10-01 12:11:11','2020-10-01 15:11:11'),(3,'2020-10-01 13:11:11','2020-10-01 16:11:11')

2020-10-18 19:10:55 1023 1

原创 20201012——3道sql题

问题1:SQL 有两张数据表A,B,通过SQL语句输出表C 输入表A: name score_1 张三 90 李四 85 王五 60 孙六 55 输入表B: name score_2 张三 90 王五 65 孙六 58 朱七 70 输出表C: name score_1 score_2 maxExam totalScore 张三 90 90 90 180 李四 85 null 85 85 王五 60 65 65 125 孙六 55 58 58 113 朱七 ..

2020-10-13 11:25:14 716

原创 112. 路径总和

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明:叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回 true, 因为存在目标和为...

2020-10-11 11:13:12 147

原创 递增顺序查找树

原题:https://leetcode-cn.com/problems/increasing-order-search-tree/ 给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。 示例 : 输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 ...

2020-10-01 20:04:29 290

原创 二叉树的层序遍历,直接打印+分层打印,递归和非递归法

队列的性质:先进先出。 使用队列,将层序遍历结果保存到数组中: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int[] levelOrder(T

2020-09-30 10:48:48 745

原创 平衡二叉树——“递归三部曲”

最近按照tag做了几道字符串、数组、排序的easy题,确实比较easy就没有发出来。今天尝试二叉树tag果然第一题就卡住了。实在没有思路,看评论区发现一篇好博客!——递归三部曲。 原博客链接: https://lyl0724.github.io/2020/01/25/1/ 题目: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 /** * Definition for a binary tree n.

2020-09-29 15:08:32 279

原创 所有奇数长度子数组的和

题目链接:https://leetcode-cn.com/problems/sum-of-all-odd-length-subarrays/ 给你一个正整数数组arr,请你计算所有可能的奇数长度子数组的和。 子数组 定义为原数组中的一个连续子序列。 请你返回 arr中 所有奇数长度子数组的和 。 示例 1: 输入:arr = [1,4,2,5,3] 输出:58 解释:所有奇数长度子数组和它们的和为: [1] = 1 [4] = 4 [2] = 2 [5] = 5 [3] = 3 [1,...

2020-09-21 18:24:15 2957

原创 有序数组的平方——指针的理解

题目链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/ 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100] 示例 2: 输入:[-7,-3,2,3,11] 输出:[4,9,9,49,121] 提示: 1 <= A.length <= 10000 -10000 <= A..

2020-09-20 22:08:34 263

原创 2020-09-19 不好理解的投票算法

题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/solution/ 数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。 示例 1: 输入:[1,2,5,9,5,9,5,5,5] 输出:5 示例 2: 输入:[3,2] 输出:-1 示例 3: 输入:[2,2,1,1,1,2,2] 输出:2 说明: 你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内...

2020-09-19 23:15:41 160

原创 数组——转置矩阵

题目链接:https://leetcode-cn.com/problems/transpose-matrix/ 867. 转置矩阵 难度简单104 给定一个矩阵A,返回A的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 示例 2: 输入:[[1,2,3],[4,5,6]] 输出:[[1,4],[2,5],[3,6]] ...

2020-09-18 23:42:47 585

原创 20200918日记

最近心态比较浮躁,做题、发博客也中断了。反思一下,觉得自己的学习方法还是有些问题,比如做题,应该按照tag来做。 今天听朋友讲了稻盛和夫,人生的意义在于不断磨练自己内心,还有就是极度专注的工作!自己这一点做得特别不好,注意力经常不集中,被一些杂念干扰,很多时候得过且过。希望自己未来能够坚持学习,成功需要专注,也希望自己能够有理想的学习状态:吃饭、睡觉都在想问题,而不是想着完成今天的学习任务就能玩儿了,这两种状态还是有很大差距的。 加油! ...

2020-09-18 23:41:05 229

原创 mysql查询优化——索引

先举两个工作中使用索引的例子,效果还是非常明显的。使用explain命令: sql执行时间从150s优化到1s以内。 第二个sql,执行时间从80s到0.3s。 可以看到,加索引之后,扫描的条数大大减少!查询时间优化了好几个数量级! 那么问题来了?索引的原理是什么?如何加索引?哪些情况会不走索引?加索引有哪些优缺点?什么情况下适合加索引? 首先,索引是一种数据结构。相当于字典的音序表。如果没有索引,就需要扫描全表。有了索引,可以提高查找的效率。查找算法!自然会想到二分...

2020-09-09 18:26:12 228

原创 使用最小花费爬楼梯——初识DP

题目链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs/ 数组的每个索引作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。 示例1: 输入: cost = [10, 15, 20] 输出: 15 解释:...

2020-08-31 17:56:21 335

原创 733. 图像渲染——初识DFS和BFS

题目链接:https://leetcode-cn.com/problems/flood-fill/ 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标(sr, sc)表示图像渲染开始的像素值(行 ,列)和一个新的颜色值newColor,让你重新上色这幅图像。 为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相...

2020-08-26 09:51:01 219

原创 记一次sql优化,从40s到1s

写sql也快有3年了,总结过hive、mysql的sql优化,前几天遇到一个问题很快的解决了,纪录一下。 数据库为mysql,修改之前的sql也是我写的,出现问题是报表超时了无法加载,我手动执行了一下sql需要40s,如下: select d.DEPT_NAME,CASE b.Corporation WHEN 6 THEN 'f' ELSE '其他' END AS '公司' ,a.UserId

2020-08-25 10:24:17 397

原创 词典中最长的单词——注意边界条件

题目链接:https://leetcode-cn.com/problems/longest-word-in-dictionary/ 给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。 若无答案,则返回空字符串。 示例 1: 输入: words = ["w","wo","wor","worl", "world"] 输出:"world" 解释: 单词"world"可..

2020-08-24 17:35:02 215

原创 数据流中的第K大元素——优先队列

题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/ 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。 你的KthLargest类需要一个同时接收整数k 和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。 示例: int k = 3; int[] arr = [4,5,8,2]; K...

2020-08-20 15:36:34 356

原创 二叉搜索树中的搜索

题目链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/ 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2 你应该返回如下子树: 2 / \ ...

2020-08-19 17:05:52 158

原创 计数二进制子串

题目链接:https://leetcode-cn.com/problems/count-binary-substrings/ 给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。 重复出现的子串要计算它们出现的次数。 示例 1 : 输入: "00110011" 输出: 6 解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。 请注意,一些重复出现的子串要计算它.

2020-08-18 18:23:44 266

原创 棒球比赛——栈!

题目链接:https://leetcode-cn.com/problems/baseball-game/ 你现在是棒球比赛记录员。 给定一个字符串列表,每个字符串可以是以下四种类型之一: 1.整数(一轮的得分):直接表示您在本轮中获得的积分数。 2. "+"(一轮的得分):表示本轮获得的得分是前两轮有效回合得分的总和。 3. "D"(一轮的得分):表示本轮获得的得分是前一轮有效回合得分的两倍。 4. "C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效回合的分数是无效的,应该被移除。 ...

2020-08-17 17:21:41 377

原创 修剪二叉搜索树

题目链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree/ 669. 修剪二叉搜索树 难度简单256 给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 示例 1: 输入: 1 / \ 0 2 L = 1 R = 2 输出: 1..

2020-08-13 14:03:55 300

原创 两数之和 IV - 输入 BST

题目链接:https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/ 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。 案例 1: 输入: 5 / \ 3 6 / \ \ 2 4 7 Target = 9 输出: True 案例 2: 输入: 5 / \ 3 6 / \ \ 2 4 7 Tar...

2020-08-12 18:01:04 155

原创 二叉树的层平均值

题目链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/ 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 1: 输入: 3 / \ 9 20 / \ 15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。 提示: 节点值的范围在32位有...

2020-08-11 18:24:55 240

原创 628. 三个数的最大乘积

题目链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/ 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 注意: 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。 ##########

2020-08-10 11:24:38 207

原创 598. 范围求和 II——思路很关键!

来源:https://leetcode-cn.com/problems/range-addition-ii/ 给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。 操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。 在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。 示例 1: 输入:...

2020-08-06 18:23:49 183

原创 迭代法搞定N叉树的前序遍历和后序遍历

如题,N叉树的前序遍历和后续遍历。leetcode上两道题挨着,让用迭代法。我先给一下递归的代码: 前序: /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _

2020-08-05 10:17:09 385

原创 581. 最短无序连续子数组——以其求思之深而无不在也!

题目链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/ 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 你找到的子数组应是最短的,请输出它的长度。 示例 1: 输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。 说明 : 输入的数

2020-08-04 09:49:07 178

原创 563. 二叉树的坡度

题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/ 给定一个二叉树,计算整个树的坡度。 一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。 整个树的坡度就是其所有节点的坡度之和。 示例: 输入: 1 / \ 2 3 输出:1 解释: 结点 2 的坡度: 0 结点 3 的坡度: 0 结点 1 的坡度: |2-3| = 1 树的坡度 : ...

2020-08-03 15:08:26 173

原创 543. 二叉树的直径

题目链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/ 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。 ..

2020-07-30 10:57:43 154

原创 530. 二叉搜索树的最小绝对差

题目链接:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 530. 二叉搜索树的最小绝对差 难度简单123 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 输入: 1 \ 3 / 2 输出: 1 解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。 #################

2020-07-29 14:01:58 275

原创 506. 相对名次

题目链接:https://leetcode-cn.com/problems/relative-ranks/ 给出N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。 (注:分数越高的选手,排名越靠前。) 示例 1: 输入: [5, 4, 3, 2, 1] 输出: ["Gold Medal", "Silver Medal", "Bronz.

2020-07-28 18:43:14 171

空空如也

空空如也

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

TA关注的人

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