ARTS (第3周)
时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。
计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。
摘自百度百科
https://baike.baidu.com/item/%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6/1894057
本周:
算法、数据结构基础
Algorithm 算法
1、简易的LRU链表
2、利用链表做回文判断
出处为极客时间的专栏《数据结构与算法之美》(作者:王争)
https://time.geekbang.org/column/intro/126
简易的LRU链表
这个做的是一个简易的LRU链表 最大6个元素
在插入的时候,进行去重以及最近最少使用策略 LRU(Least Recently Used)进行剔除大于6个的元素。
1 | package jdk8test; |
测试demo
1 | public static void main(String[] args) { |
运行结果符合预期
1 | do repeat--------- |
如何判断一个字符串是否是回文字符串(采用单链表的方式实现,链表里每一个元素,都是一个char)
我的思路:
1、 快慢指针寻找中间节点,慢指针一边前进一边进行链表的反转。
2、 从中间节点开始,用逆序的前半部分节点和中间节点的后一个节点进行匹配
3、 还需要区分字符串是奇数还是偶数
PS:使用的是之前我自己写的简易LRU链表。
代码如下:
1 | /** |
调用如下
PS:因为回文必定有重复的情况,在这里我将链表的去重功能去掉了
1 | public static void main(String[] args) { |
Review 英文文章
Apache Hadoop的官网,大概介绍了hadoop。
Tip 技巧
极客时间的专栏《数据结构与算法之美》
本周学习了该专栏中的0-9篇
学习了时间复杂度、空间复杂度、数组、链表、堆结构、队列结构。
出处:《数据结构与算法之美》(作者:王争)
https://time.geekbang.org/column/intro/126
自定义starter
内容较多,就不一一贴上来了,大概说一下思路。
需要创建2个项目或者模块
第一个模块就是我们的启动器,里面只需要引入其它依赖,不需要有任何的代码。
另一个模块就是我们的自动配置模块,从类路径下创建META-INF/spring.factories,在里面根据自己的需要配置初始化器、监听器或者bean(可以用条件注解进行环境判断),达到自动配置的效果。
学习自尚硅谷
Share 分享
本周的分享也就是我当前所学习的算法专栏
《数据结构与算法之美》(作者:王争)