数据结构与算法
0.0 PTA实录
0.1.1 最大子列和plus
- 如何利用语句先后顺序记录上一条信息
pre_start_tag
void sum_max_sequence(void) |
Listary使用
网络搜索
- 有时候站内搜索没有搜索引擎准确,可以使用搜索引擎过滤网站
过滤站点:
http://<ENGINE.URL>/search?text=site%3A<SITE.URL>%20{query} |
启动应用
功能 | 路径 | 参数 |
---|---|---|
当前目录启动终端 | wt.exe | -d “{current_folder}” |
Golden Dict查词 | GoldenDict.exe | -s {query} |
启动ipython | wt.exe | ipython |
查看网络连接 | control.exe | ncpa.cpl |
编辑环境变量(需要管理员权限) | rundll32 | sysdm.cpl,EditEnvironmentVariables |
PHP ADTP后台管理
DP 设计模式
策略模式
class MallardDuck extends Duck { |
识别应用中变化的方面,把它们和不变的方面分开。
针对接口编程,而不是针对实现编程。
// Implement |
优先使用组合而不是继承。
summary
策略模式定义了算法族并分别封装。策略让算法变化独立于使用它的客户。
Spring Boot
DevTools
<dependency> |
Spring CLI
可以用Spring Initializr或Spirng CLI来构建项目
spring init -list # 列出参数 |
- Web: API服务
- JPA: 访问数据库的抽象
项目结构图
$ tree basic-project/ |
Maven
换源
distributionUrl=https://maven.aliyun.com/repository/central/org/apache/maven/apache-maven/(edition.number)/apache-maven-(edition.number)-bin.zip |
运行项目
mvn spring-boot:run |
Deep Reading
“When in doubt go to the library.” – J.K.Rowling
Catalog
Article1: What Are You Going to Do With That?
What Are You Going to Do With That?
William Deresiewicz(《国家》杂志撰稿人和《新共和》杂志编辑)在斯坦福大学的演讲
The question my title poses, of course, is the one that is classically aimed at humanities majors. What practical value could there possibly be in studying literature or art or philosophy? So you must be wondering why I’m bothering to raise it here, at Stanford, this renowned citadel of science and technology. What doubt can there be that the world will offer you many opportunities to use your degree?
(学习文学、艺术或哲学能有什么用呢?所以你肯定纳闷,我为什么在在以科技堡垒而闻名的斯坦福提出这个问题呢?在大学学位给人带来众多机会的问题上还有什么可怀疑的吗?)
But that’s not the question I’m asking. By “do” I don’t mean a job, and by “that” I don’t mean your major. We are more than our jobs, and education is more than a major. Education is more than college, more even than the totality of your formal schooling, from kindergarten through graduate school. By “What are you going to do,” I mean, what kind of life are you going to lead? And by “that,” I mean everything in your training, formal and informal, that has brought you to be sitting here today, and everything you’re going to be doing for the rest of the time that you’re in school.
(但那不是我提出的问题。这里的“做”并不是指工作,“那”并不是指你的专业。我们不仅仅是要个工作,教育不仅仅是学一门专业。教育也不仅仅是上大学,甚至也不仅是从幼儿园到研究生院的正规学校教育。我说的“你要做什么”的意思是你要过什么样的生活?我所说的“那”指的是你得到的正规或非正规的任何训练, 那些把你送到这里来的东西,你在学校的剩余时间里将要做的任何事。)
LeetCode100 错题本
Hash
字母异位词
排序每一个单词,就知道是不是异位词。
两数之和
从数组中,找到nums[i] + nums[j] == target
,并返回{ i, j }
。
思路是双重循环,遍历每一个元素,求和是否为target。
然而,双重循环需要O(N2)的复杂度。因此,可以使用一张表,使用containsKey
方法识别是否存在当前i的target - nums[i]
,即可减少一重循环。
关键思想
用Map高效率查找,减少一重循环。
最长连续序列
从乱序数组中,找到最长连续(数组中不一定连续)的序列。要求O(N)。
首先用数组的值存入哈希表,然后遍历数组,判断map.constains(curNum++)
。
然而,即使这样还是效率不够高。
优化
- 中间值不进入循环,序列开始值才进入,使用
!contains(curNum - 1)
判断是否为序列开始值 - 去重,不要哈希表,不需要键值对,使用哈希Set,只存储值。
关键思想
去重;不处理中间值
PyEcharts 数据可视化
1.0 Bar 柱状图
from pyecharts.charts import Bar |
- 效果
动态规划学习指南
Before starting the topic let me introduce myself. I am a Mobile Developer currently working in Warsaw and spending my free time for interview preparations. I started to prepare for interviews two years ago. At that time I should say I could not solve the two sum problem. Easy problems seemed to me like hard ones so most of the time I had to look at editorials and discuss section. Currently, I have solved ~800 problems and time to time participate in contests. I usually solve 3 problems in a contest and sometimes 4 problems. Ok, lets come back to the topic.
Recently I have concentrated my attention on Dynamic Programming cause its one of the hardest topics in an interview prep. After solving ~140 problems in DP I have noticed that there are few patterns that can be found in different problems. So I did a research on that and find the following topics. I will not give complete ways how to solve problems but these patterns may be helpful in solving DP.