ACM类编程题笔试 一、行读取的格式# 1、一个input()读取一行# 2、把一行中的数字转化成列表list_1 = list(map(int,input().split())) # 分割-转化成int-list# orlist_1 = [int(i) for i in input().split()]# 3、数字转化成列表 123->[1,2,3]# 无空格的input()输出是数字123,需要转化成列表中的数字:list(map(int,input())# 有空格的input()转化为数值列表l
mysql正则表达式搜索 一、 like和regexp的区别1、like是完全匹配%:表示任意0个或多个字符。可匹配任意类型和长度的字符%%:有些情况下若是中文,请使用两个百分号(%%)表示。_: 表示任意单个字符。[ ]:表示括号内所列字符中的一个。[^ ] :表示不在括号所列之内的单个字符。2、regexp是部分匹配,等同于rlikeregexp操作符^ :匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘’ 或 ‘\r’ 之后的位置。$ :匹配输入
指标下降分析 一、分析问题如果当前问题经过分析是需要解决的,才会接着从人货场角度分析问题所在并寻求解决措施。1、判断数据源质量确认数据本身没有错2、判断指标波动幅度(问题轻重)事先要设好预期值3、判断指标波动持续时间(问题缓急)持续性下跌≥一次性下跌≥周期性下跌(1)持续下跌的时间越长问题越严重(2)周期性问题要注意和上一期作比较,如果每一次下跌的幅度变大说明问题严重性指标下跌/上升,通常有三种形态:● 一次性变化:只在某个时间点发生波动。一次性变化背后的一般都是短期/突发事件,比如系统down掉
牛客刷题——插更删 SQL1 插入记录(一)由于comment是自增主键,相当于索引,所以插入的时候会跟随表格行数进行自己增加。insert into exam_recordVALUES (null,1001,9001,'2021-09-01 22:11:12','2021-09-01 22:11:12' +INTERVAL 50 minute,90),(null,1002,9002,'2021-09-04 07:01:02',null,NULL);insert into exam_record(uid,exam
数据分析的思维展开 一、MECE的优点MECE,是Mutually Exclusive CollectivelyExhaustive的缩写,简单归纳成8个字:相互独立,完全穷尽;分析原因的时候很容易把各种原因交织在一起,造成思维混乱。MECE可以i帮助厘清思绪。二、MECE的步骤MECE第一步:确定目标MECE第二步:分步骤梳理问题层层拆解原因,每一层可以多分几个层次。分析的最终目的是能指导业务改善,因此分析逻辑应指向业务可以落地的地方MECE第三步:代入数据量化MECE第四步:导出业务结论ME
因果推断 一、因果推断的适用场景因果性是指在操作/改变X后,Y随着这种操作/改变也变化,则说明X是Y的因cause。有些场合可以很明显的区分相关和因果,举个例子,我们会发现在学校中,近视的同学成绩更好。近视和成绩好之间有强相关性,但显然近视不是成绩好的原因。而我们想要提升学生成绩,自然需要找到因,否则就会通过给学生戴眼镜的方式来提高成绩。但是有很多场合难以区分,举个例子,经常喝葡萄酒的人寿命更长,是因为葡萄酒确实能延长寿命,还是因为能经常喝的人通常更富有,享有更好的医疗条件。识别某种干预是否产生效果,**简
AARRR模型 一、Acquisition 用户获取用户获取,用户拉新,首先要去考虑的其实并不是各种渠道推广引流,而应该是产品上降低用户的使用门槛,结合不同阶段用户群体的特征,制定最适合的拉新策略,同时时刻关注各个核心数据指标。(一)产品角度1. 简化注册登录流程(1)账号强相关产品,由于当前绑定手机为硬性要求,往往可以采用默认手机验证码登录的形式,将注册/登录/绑定流程融合,简化用户操作流程。同时,可以辅以各个社交账号的引入登入,如常见的微信/微博/QQ授权等。(2)对于账号非强相关的产品,则可以采用直接.
牛客刷题——case when SQL69 牛客每个人最近的登录日期(四)查询每个日期登录新用户个数,并且查询结果按照日期升序排序思路:首先可以得到每个用户最开始登录的日期,然后如果直接对这个表count会失去计数为0的日期。所以应该到原来的表里进行in的判断,是就放进计数,不是就不计数,也就是用到sum(case when 条件 then 1 else 0 end)select date,sum(case when (user_id,date) in (select user_id,min(date) from logi
牛客刷题——窗口函数 文章目录一、窗口函数(一)参数含义(二)功能(三)执行顺序(四)窗口函数的选择(五)实际应用1、累积求和2、计算移动平均3、用户行为分析一、窗口函数(一)参数含义<窗口函数> window_name OVER ([PARTITION BY <列清单>]ORDER BY <排序用列清单>)over:用来指定函数执行的窗口范围,若后面括号中什么都不写,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算;如果不为空,则支持以下4中语法来设置窗
leetcode刷题——回溯例题 文章目录一、组合问题一、组合问题77. 组合:n个数中求k个数的组合问题思路:每次从集合中选取元素,可选择的范围随着选择的进行而收缩,调整可选择的范围。终止条件:每次搜索到了叶子节点,我们就找到了一个结果。for循环用来横向遍历,递归的过程是纵向遍历。backtracking(递归函数)通过不断调用自己一直往深处遍历,总会遇到叶子节点,遇到了叶子节点就要返回。参数含义:n:相当于树的宽度k:相当于树的深度。startIndex:这个参数用来记录本层递归的中,集合从哪里开始遍历(集合就是
leetcode刷题——回溯算法知识点 一、什么是回溯?定义:回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。回溯函数也就是递归函数,指的都是一个函数。效率:因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。回溯法很难,很不好理解,但是回溯法并不是什么高效的算法。适用情况:一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法。适用问题类型组合问题:N个数里面按一定规则找出k个数的集合切割
xgboost知识点总结+代码调参 1. xgboost与GBDT的区别:(1)xgboos相比GBDT的优点(1)精度更高:GBDT只用到一阶泰勒, 而xgboost对损失函数进行了二阶泰勒展开, 一方面为了增加精度, 另一方面也为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数。(2)灵活性更强:GBDT以CART作为基分类器,而Xgboost不仅支持CART,还支持线性分类器,另外,Xgboost支持自定义损失函数,只要损失函数有一二阶导数。(3)正则化:xgboost在目标函数中加入了正则,用于控制模型的复杂度。有助于降
leetcode刷题——二叉树例题 文章目录一、层序遍历一、层序遍历107. 二叉树的层序遍历 II# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def level
leetcode刷题——二叉树知识点 文章目录一、二叉树的种类二、二叉树的存储方式三、二叉树的遍历方式(一)二叉树的递归遍历四、二叉树的定义一、二叉树的种类满二叉树:只有度为0的结点和度为2的结点完全二叉树:除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。【优先级队列】其实是一个堆,堆就是一棵完全二叉树,同时保证父子节点的顺序关系。二叉搜索树:二叉搜索树是有数值的了,二叉搜索树是一个有序树。若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树
leetcode刷题——栈与队列 20. 有效的括号 # 方法一,仅使用栈,更省空间 stack = [] for item in s: if item == '(': stack.append(')') elif item == '[': stack.append(']') elif item == '{': stack.appen
leetcode刷题——字符串 文章目录一、反转二、替换三、翻转一、反转数组反转就用首尾指针,字符串是一种特殊的数组结构344. 反转字符串【反转问题】字符串也是一种数组结构,不同于链表,链表交换是从开始到最后两两交换,相当于调换一下指针的方向;但是字符串的交换则是分别从头尾出发,两两交换头尾元素。class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, m