​LeetCode刷题实战550:游戏玩法分析 IV

2022-04-12 19:14:09 浏览数 (1)

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试 算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 游戏玩法分析 IV,我们先来看题面:

https://leetcode-cn.com/problems/game-play-analysis-iv/

解题

本题要求计算一个比值,分母是所有不同选手的数量,分子是那些首次在设备登录后连续第二天又登录的选手数量。

分母很容易求,难点在于分子的计算。要计算分子,首先要找到每个选手的首次登录日期。然后,将该查询作为一个临时表与原表连接,再筛选出那些登录日期与首次登录日期相差一天的记录,最后计算数量即可。

代码语言:javascript复制
SELECT ROUND
  (
    (
      SELECT 
        COUNT(
          IF(DATEDIFF(a1.event_date, a2.min_date) = 1, 1, null)
          )
      FROM
        Activity a1,
        (
          SELECT
            player_id,
            MIN(event_date) AS min_date
          FROM
            Activity
          GROUP BY player_id
        ) a2
      WHERE
        a1.player_id = a2.player_id
    ) 
    / COUNT(DISTINCT(player_id)) 
, 2) fraction
FROM
  Activity

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-540题汇总,希望对你有点帮助!

LeetCode刷题实战541:反转字符串 II

LeetCode刷题实战542:01 矩阵

LeetCode刷题实战543:二叉树的直径

LeetCode刷题实战544:输出比赛匹配对

LeetCode刷题实战545:二叉树的边界

LeetCode刷题实战546:移除盒子

LeetCode刷题实战547:省份数量

LeetCode刷题实战548:将数组分割成和相等的子数组

LeetCode刷题实战549:二叉树中最长的连续序列

0 人点赞