00:01
好的同学们,那么接下来呢,我们看一下这个,呃,刚才我们聊的是思路一,那既然有思路一,而且我们说了不带着大家去写了,那必然我们应该有什么思路二的数据,对吧?思路二的数据啊呃,那我们来看一下这个内容,我就拿一个1001的这个数据过来啊,那现在呢,我们要求它的一个最大值,同时呢,要考虑这个间隔时间,那如果说我们来看一下这个数据啊,它中间间隔一天,它中间呢,间隔了七八两天啊,那肯定是算一个断断层,呃,那在这个过程当中呢,它。是一期的连续的,它呢算连续的,呃,那如果说我们考虑另外一种思路啊,如果我们能将这个数据一直到这儿,对吧,从12~16分到第一个组里边,然后呢,这个分到第二个组里边,然后在组内用最大值减去最小值呢。我们在组内做最大值减最小值,然后加一,那大家想一下,这样的话是不是直接跳过了断层,算我们的数据啊,对吧,因为有断层,但是有一个问题就来了,那我们考虑分组的问题。
01:15
好,呃,刚学完第二题的同学应该立马就反应过来了啊,那这个分组简不简单,好不好做?对吧?好,那这个就很简单了,来,我们把这个思路写一下啊,在这个地方呢,首先我们是不是上将上,我把这个思路写一下啊,就S的话,大家可以参考第二题啊,这个就完全可以自己去完成了啊,没有问题啊,那将上一行数据怎么样?数据时间数据吧,还是时间数据啊叫下移对不对,叫下移啊好,那第一条数据呢,我肯定给一个比较小的值了啊0101对吧,好,那这个呢,我拿过来往这一放啊,这个呢是13啊,这个是14。
02:02
嗯,那么到这为止呢,这个是16啊,最后一个是19啊,下一那第二步应该干什么事呢?是不是应该将当前,将当前行时间叫减去上一行时间。数据对不对,好,那我们就把这个拿过来,一减的话,我们得到了一个什么样的效果,那这块呢,应该是一个特别大的值,反正我也不知道是多少,我就随便写的啊,那这个地方呢,是一个一,那这一块呢,它同样的是个一,对不对,好一减这个地方是二。到这儿就变成了三,它们之间呢是一啊,注意这个日期相减呢,咱们用我给大家写一下啊,叫得塔D函数里边呢,传T1和T2啊,这个应该是叫DT1和DTR啊就这样的,就是做一个减法啊日期相减,像那我们最后得到的肯定这样的一个结果。
03:02
啊,那跟第二题一样,那我们既然要做分组,将它分到一个组里边,大家能观察到,就是说我们要求的是从第一行到当前行有多少个大于二的数据,是不是就好了。啊,又是用some if吧,对吧?好,那第三步就是按照用户分组,同时按照时间排序对吧,排序啊,计算从第一行到当前行大于什么二的数据。数据的总条数,总条数也就是说我们刚才用到的some if对吧?啊some if类似于这样子的啊,什么什么这个flag大于20对吧,哎,不是大于20,大于二我们给个一,否则给个零对吧?好,那这样的话,我们总条数,这个所谓的总条数其实就是我们的分组对不对?好,那这个数据呢,大家应该也能想的明白,这个数据应该长什么样子了,那么这块呢,是不个一啊它呢一一对吧,好,16呢,照样是个一,因为大家看啊,从我们要大于二,那么第一条数据呢是一,第二条数据都不大于二,那么这块呢,都是一对吧,前四条一好,那你是三,你是三的话,你这个。
04:33
这个这是不是两条大于二的呀,所以呢,你是二,那到这条为止也是一样的等于二,所以这样的话我们就得到了这个分组了,那这个数据都已经得到了,求最后的值还是问题吗?那我们只需要按照ID加上我们的这个组一分去max取命一减加一加一天是不是就好了,对吧?啊,那也就是说这个一直到这个第三步为止,其实跟我们上一个需求完全一样,那之后呢,我们只需要啊,我这个稍微写一下啊呃,按照用户和这个什么flag分组对吧?也就是我们的这个内容进行分组啊,求最大时间减去最小时间并加上。
05:24
加上加上一啊,并加上一对不对,那这个呢,就是我们每个用户。登录天数啊,连续的这个登录天数啊,但是呢,你看啊,那这块呢,它也求了出来了,也等于一个二对不对,那所以最后还有第五步啊,第五步取。连续登陆天数的最大值啊,最大值,也就是说你要把这个求出来啊,呃,那这个斯克呢,是我们的一个思路对吧?啊思路。
我来说两句