ARTS (第2周)
这个是左耳听风写在coolshell上的一篇早期的文章。这是该篇文章的结尾。本周的分享也是这篇文章,在此我用这篇文章作为开篇词。
- 能够去规划自己的个人发展的人,通常都是有很多机会和可能性的人。
- 有很多机会和可能性的人,通常都是有Leadership,喜欢冒险的人。
- 有Leadership喜欢冒险的人,通常都是学习能力强,思维活跃,喜欢折腾,懂得“投资”的人。
- 学习能力强思维活跃的人,通常来说,都是喜欢看书,喜欢实践和新鲜事物,不怕艰难和挑战,用智力而不是使蛮力的人。
- 懂得“投资”的人,通常来说,他们更多的关注的是未来和长远的成长,而不是当下的KPI、奖金和晋升。
出处: https://coolshell.cn/articles/17583.html
本周:
摩尔投票法
Algorithm 算法
求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
参考链接
https://leetcode-cn.com/problems/majority-element/submissions/
我的第一次的做法
1 | public int majorityElement(int[] nums) { |
思路就是先排序,然后每个数字,和跨越一半数组的数字去比对,这也是根据三个礼拜做的三数之和的答案来引申出来的。超越了45的用户%。
随后我观看评论,看到了这个答案。
1 | public int majorityElement(int[] nums) { |
对于这个答案,我只想说简单粗暴,排序之后,因为众数超过一半 所以中间的位置,一定就是众数。
对于这个答案,我引申想到了可以用冒泡排序,不断求最大数,当求到中间数字的时候,就可以直接返回答案了。不过提交之后,直接返回说超时,想到冒泡排序的时间复杂度是O(n²),是双重循环,效率可能还不如2个不重叠的循环的做法(一个循环计数,一个循环判断最大值)时间复杂度为O(2n)。
最后看到了一个最好的答案(摩尔投票法)
1 | public int majorityElement(int[] nums) { |
理解之后思路为:循环数字,用一个个数字统计,发现相同数就加,发现不同数就减,小于0就换下一个数字, 因为这个数字是超过一半的, 所以到最后还留着的就是最多的数字。
Review 英文文章
zookeeper官网,主要对zookeeper做了介绍和简介。
Tip 技巧
PS:以下内容学习自尚硅谷
1、Spring boot学习后续-Thymeleaf使用
依赖:
1 | <dependency> |
1、导入thymeleaf的名称空间
1 | <html lang="en" xmlns:th="http://www.thymeleaf.org"> |
2、thymeleaf语法;
所有的th:xxx可以会将默认值替换为自己设置的值。如th:text;改变当前元素里面的文本内容;具体就不一一列举了。
1 |
|
3、表达式
1、${…}:获取变量值;如
1)、获取对象的属性、调用方法。
2)、使用内置的基本对象:
3)、内置的一些工具对象:
2、#{…}:获取国际化内容
3、@{…}:定义URL;
4、另外也有如ognl类似的加减等。
1 | Literals(字面量) |
2、docker的简易使用
主要概念:
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用;
使用Docker的步骤:
1)、安装Docker
1 | yum install docker |
2)、去Docker仓库找到这个软件对应的镜像;
1 | docker pull tomcat//垃圾tomcat进行 |
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
1 | 1、根据镜像启动容器 |
docker的官网地址:
Share 分享
https://coolshell.cn/articles/17583.html
这个是左耳听风写在coolshell上的一篇早期的文章。也即是开篇词的出处。