- 博客(28)
- 收藏
- 关注
原创 Leetcode 206.反转链表-题解之深入理解递归
递归问题一直是一个看似简单实则上手很难的方法。很多人(包括我在内)常常无法把具体问题抽象成递归函数,找不到终止条件,不知道函数应该做什么,不清楚要抽象出的逻辑什么...本文尝试用leetcode中的简单链表问题,来一步步阐述递归的思考过程。首先要明白,递归是反复调用自身的过程。递归分为递推和回归两步,递推和回归的中间过渡为终止条件。我们不必考虑每一步递归究竟在做什么,只需要把问题上升一个高度,不去关注细节,只关注宏观逻辑。即可知递归一大关键要素:抽象。题目:思考如何递归往往要考虑三个条件
2021-03-08 14:50:41 141
原创 Leetcode 198.打家劫舍-题解之典型动态规划
(1)当只有一户时,小偷只偷该户,即为最大利润。(2)当有两户时,小偷偷两户之中金额较高的,即为最大利润。(3)当有n户时,小偷获取利润有两种可能:a.偷第n户,且偷取前n-2户最大利润。b.偷前n-1户最大利润。使用动态回归,由上述可知状态转移方程为:dp[i] = max(dp[i-2]+nums[i], dp[i-1])由上述可知,边界条件为:dp[0] = nums[0]dp[1] = max(nums[0], nums[1])classSolutio...
2021-01-10 21:21:01 168
原创 Leetcode 643.子数组最大平均数-题解
连续且长度为k,可联想到滑动窗口,此题是典型的简单滑动窗口例题。滑动窗口window为大小为k,首先计算最初长度为k的数组和,之后滑动窗口的和则为减去滑动窗口起始点且加上滑动窗口结束点的下一位置值,最大平均数即为所有滑动窗口中和最大的值。classSolution:deffindMaxAverage(self,nums:List[int],k:int)->float:begin,sum_=1,0forjin...
2021-01-08 21:57:00 117
原创 Leetcode 547.省份数量-题解
根据题意,可以把图中的城市及其相连关系看作图,城市是图中节点,相连关系是图的边,isConnected可以看作图的邻接矩阵,返回的省份可以看作连通分量。方法可用广度优先搜索和深度优先搜索。1.广度优先搜索广度优先搜索关键:队列、记录已访问节点步骤:遍历isConnected矩阵(每行代表一个城市),如果该城市之前未被访问(即不在任何连通分量里),则创建队列,添加该城市进队列,province数量加一(每创建一次队列即为新的连通分量即province加一),进行广度优先搜索,直到同一个连通..
2021-01-08 00:09:30 166
原创 TTL在IP和DNS中的区别
维基百科对TTL的解释:Time to live (TTL)orhop limitis a mechanism that limits the lifespan or lifetime of data in a computer or network. TTL may be implemented as acounterortimestampattached to or embedded in the data. Once the prescribed event count or ti...
2021-01-05 22:10:50 494
原创 python pymysql批量插入executemany,以及批量插入避免重复项
在进行大数据量插入时,使用execute效率很低。所以改用executemanyexecutemany(query,args) 能同时执行多条语句,执行同样多的语句可比execute()快很多,强烈建议执行多条语句时使用executemany query: sql模板字符串, 例如 'insert into table(id,keyw...
2020-01-19 11:36:05 6747 4
原创 Python数据库查询出现 ValueError:unsupported format character '?'
当查询语句中带有模糊查询,且带有 %s 用来连接字符串时,会出现 ValueError:unsupported format character '?' 的错误例如:item = 1sql = "SELECT id,statement FROM table where statement like '%标题%' limit %s"cursor.execute(sql, item...
2019-11-11 17:32:23 9622 1
原创 【Linux命令】crontab命令使用方法
crontab: 用于设置定时任务,精确到分。安装crontab:yum install crontabcrontab服务操作说明/sbin/service crond start # 启动服务/sbin/service crond stop # 关闭服务/sbin/service crond restart # 重启服务/sbin/service c...
2019-11-11 14:27:57 272 1
转载 【Linux命令】Linux批量结束、杀死进程
ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令: “ps aux”是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep python”的输入。 “grep python...
2019-11-11 09:48:07 132
原创 验证Python使用requests时 代理IP是否有效
使用 http://icanhazip.com/ 测试代理IP是否使用成功。访问该网站时,页面显示的是IP地址。import requestsurl = 'http://icanhazip.com'proxies = {'http': '{}:{}'.format(host, port)}r = requests.get(url, proxies=proxies)print(r...
2019-11-05 12:03:24 4378
原创 简洁易懂的PyCharm2018.2版本破解补丁激活方法(附破解补丁)
写在前面: 激活的版本是PyCharm Professional 2018.2 ,其他的版本不保证有效1.PyCharm官网下载2018.2版本https://www.jetbrains.com/pycharm/download/other.html(PyCharm版本要和破解补丁版本对应,否则无效)2.下载破解补丁(我使用的是JetbrainsCrack-2.1...
2019-07-29 17:54:05 1671
原创 【Python基础】Python基础知识整理第二弹 (函数的参数)
1.默认参数默认参数作用:当缺少参数时,函数仍可以被正常调用,降低调用函数的难度。例如:def func(x,,n=2) return x*n 当调用func(5)时,相当于调用func(5,2),所以代码不会报错。必选参数在前,默认参数在后,否则Python解释器会报错。当不按顺序提供部分默认参数时,需要把参数名写上:# 定义def enroll(na...
2019-05-18 17:21:34 120
原创 【Python基础】Python基础知识整理第一弹
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。Python为编程人员提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池”(batteries included)。除了内置的库外,Python还有大量其他人开发的第三方库,供编程人员使用。Python缺点:...
2019-05-16 20:00:09 187
转载 为什么python中的range函数要设计为左闭右开区间?
基于Dijkstra观点的解释为了表示 1,2,3,…,9 这样一个序列,有四种方法1 ≤ i < 10(左闭右开区间) 0 < i ≤ 9(左开右闭区间) 1 ≤ i ≤ 9(闭区间) 0 < i < 10(开区间) 那么我们是否有理由更喜欢其中一种方法呢?答案是肯定的。 方法一和方法二具有以下优点:他们边界之间的差正好等于序列的长度。并且,在这...
2019-05-16 19:20:42 5764
原创 【学习笔记】分布式爬虫打造搜索引擎|笔记04|elasticsearch及其插件安装
当想要给网站或程序添加搜索功能,并且对服务有如下要求:搜索解决方案高效 零配置和完全免费的搜索方案 能够简单的通过json和http与搜索引擎交互 搜索服务器稳定 能够简单的将一台服务器扩展到上百台那么elasticsearch是非常合适的选择。elasticsearch简单介绍elasticsearch是基于Lucene的搜索服务器,基于Java开发。 提供了一个分布式多...
2019-05-11 20:19:41 225
原创 【学习笔记】分布式爬虫打造搜索引擎|笔记03|scrapy-redis分布式爬虫
分布式爬虫的优点充分利用多机器的带宽加速爬取 充分利用多机的ip加速爬取速度分布式需要解决的问题request队列集中管理 去重集中管理scrapy架构如果要用scrapy做分布式,另一台服务器拿不到当前scrapy内存中的内容,所以队列管理要做成集中管理。scrapy通过内存中的集合set做去重管理,要做分布式就要把去重做成集中管理,但scrapy并没有提供一种机制让...
2019-05-08 16:37:00 262
原创 【学习笔记】分布式爬虫打造搜索引擎|笔记02|scrapy爬取博客网站
scrapy框架Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。...
2019-05-07 18:01:50 234
原创 python执行cmd命令:打开elasticsearch、elasticsearch-head和kibana
每次打开elasticsearch、elasticsearch-head和kibana都要在对应的目录下执行命令,嫌麻烦所以写了一个python脚本一次都执行。import osimport timedef run(): os.system('start D:\\elasticsearch\elasticsearch-5.1.1\\bin\\elasticsearch.bat')...
2019-05-06 22:57:53 552
原创 【sql编程2_2】日期相减,换算月数、年数
emp表:题目:求第一个员工和最后一个员工聘用(HIREDATE)之间相差的月份数,以及这些月折合的年数。分析:数据库录入员工信息是聘用早的在前,聘用晚的在后,所以第一个员工是聘用时间最早,最后一个员工是聘用时间最短。select TIMESTAMPDIFF(YEAR,MIN(hiredate),MAX(hiredate))AS 相差年数,TIMESTAMPDIFF(MONTH,...
2019-03-10 16:16:58 3945
原创 【sql编程2_1】计算中位数
dept表: emp表:题目:计算dname = ‘Research Institude’的员工工资中位数中位数是指:一组按照大小排列起来的数据中处在中间位置的数,当有奇数个(如17个)时,中间数就是中间那个数(第9个);当有偶数个(如18个)数据时,中间数就是中间那两个数的平均值(第9个和第10个的平均值)set @rowindex:=0;select AVG(sal)...
2019-03-10 12:09:17 831
原创 【sql编程1_4】分组求和
dept表:题目:如果一个管理者管理多个部门,那么他控制的部门预算就是这些部门的预算的总和,找出控制预算超过50万的管理者select manageridfrom deptGROUP BY manageridhaving sum(budget)>500000显然本题要用分组求和,先在dept表中按managerid分组,在用聚集函数SUM对每个组中的预算budget进行求...
2019-03-09 16:03:54 261
原创 【sql编程1_3】限制结果
dept表:题目:查询预算最高的前两个部门管理者的manageridSELECT manageridfrom deptORDER BY budget desclimit 2查询结果为MySql中,为了返回第一行或前几行,可使用LIMIT子句,如limit 5表示MYSQL返回不多于5行,limit 1,1表示返回从第一行开始的一行(将检索出第二行,题中limit 2改为li...
2019-03-09 15:43:04 124
原创 【sql编程1_2】连接查询
emp表: works表: dept表:题目:查询工资超过他(或她)所在部门预算的20%的雇员select DISTINCT emp.*from emp,works,deptwhere emp.eid = works.eid and dept.did = works.did and salary>budget*1.2结果为:若不加distinct,则结果为...
2019-03-09 15:19:46 84
原创 【sql编程1_1】sql查询 同一个字段 同时满足多个条件
emp表: works表: 题目:查询同时工作于"硬件"和"软件"两个部门的每个雇员的名字和年龄select ename,agefrom empWHERE eid in (select eid from works where did = '软件' or did = '硬件'GROUP BY eidhaving count(eid) = 2)该SQL语句...
2019-03-09 14:46:52 13004 1
原创 【Python笔记】重温汉诺塔
Python学到递归处,想起了最早学C语言的汉诺塔问题,如今重新温习。递归虽然复杂,但理解递归的要点主要在于“放弃“!放弃你对于理解和跟踪递归全程的企图,只理解递归两层之间的交接,以及递归终结的条件。所以汉诺塔问题可以简化为四种状态:1状态--->2状态:A塔借助C塔将N-1个盘子移到B塔2状态--->3状态:A塔把一个盘子移到C塔3状态--->4状态:B塔借助A塔把N-1
2018-01-13 17:58:24 187
原创 解决java中jfreechart汉字显示不出来的问题
在用java写jfreechart的时候,遇到显示不出来汉字的问题。这时候需要在构造函数中加一段代码解决 CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象 CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domain
2017-11-24 11:29:47 1721
转载 ASCII、Unicode、UTF-8编码
今天看廖雪峰Python3基础教程中,有一节介绍ASCII、Unicode、UTF-8编码介绍得很好,特拿来放在博客。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用 8 个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制11111111=十进制 255),如果要表示更大的整数,就必须用更
2017-11-22 19:56:38 113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人