IDEA create class and method comment use template
Class commentIDEA - Settings - Editor - File and Code Templates - Class
/** * @description: ${description} * * @author: YOUR NAME or {USER} * * @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} */
Method CommentIDEA - Settings - Editor - Live Templates - create a new Template Groups. I my case i create a Template Groups named “Method Comment”.
Then select “Method Comment” add a new Live Template
NOTICE: there is no / in fi ...
在GitHub上部署Hexo网站
换电脑好久了,个人网站一直拖着没有部署。今天决定要搞一下,发现很多步骤都忘记了,因此写篇帖子记录一下,方便以后查阅
要在新 Mac 上安装 Hexo 首先需要有 Homebrew。Homebrew 官网推荐的安装方式因为某些特殊原因,一直报错。尝试在 /etc/hosts 文件中配置 GitHub,但是没起作用。最终解决方法:使用国内镜像安装 Homebrew
装好 Homebrew 以后,可以去到 Hexo 官网,按官网提示安装 Hexo
npm install hexo-cli -g 安装 hexo
cd blog 进到本地自己的博客文件夹中
npm install
将博客文件部署到 github.io 上
去到博客根文件下修改 _config.yml,将 GitHub 的部署方式修改为 SSH 方式 github: git@github.com:userName/userName.github.io.git
按照 Generating a new SSH key and adding it to the ssh-agent 一步一步的设置 SSH
在博客根目录运行 h ...
我的2022年终总结
今年的重心是秋招和毕业。
秋招 9 月份开始投递简历,主要投的互联网行业,现在是 0 offer,每天笑哈哈。
毕业主要是毕业要求和毕业论文,毕业要求已经达到了,论文也有了大体框架,剩下的就差写出来了。
今年来主要做了如下几件事:
英语学习。听力,一直在坚持听英语播客「ESLPod」,听了 40 期了。阅读,读了一本「小王子」。写作和口语,无。6 级考了还没出成绩。每天也在坚持用英语。
准备秋招。做了 2 个简历上的项目,看了些八股文,读了周志明的 Java 虚拟机。刷题见下面第 3 条。去年定的目标是上岸大、中厂,还是大意了。
刷题。LeetCode 每日一题坚持了 7 个月了,周赛也打了几十场了,算法和数据结构的学习一直没断,每天都在进步,做题也渐入佳境。刷题是打算培养成个人爱好的。
读书。今年读了 32 本书,离去年的 50+ 目标有点差距。
健康。今年牙齿动了个小手术,4 颗智齿全部拔掉了,补了几颗蛀牙。其他方面没啥问题。对了,我已经阳过了,发烧最高到了 39.8 度,直逼 40 度,吃了三片对乙酰氨基酚。其他症状有浑身疼、咳嗽、嗓子疼、流鼻涕、味觉嗅觉衰退,感觉也还好。也给 ...
KMP字符串匹配算法
力扣题目:Find the Index of the First Occurrence in a String
给定原串 s 长度为 n,模式串 p 长度为 m。
先给个暴力解法:
int fun(String s, String t) { int n = s.length(), m = t.length(); for (int idx = 0; idx <= n - m; idx++) { int i = idx, j = 0; for ( ; j < m; ++i, ++j) { if (s.charAt(i) != t.charAt(j)) break; } if (j == m) return idx; } return -1;}
首先,KMP(Knuth–Morris–Pratt algorithm)和暴力解法的不同之处是,当遇到不相同的字符时,暴力解法采取的措施是:原串指针回到本次开始位置的下一个位置, ...
差分数组
适用情况频繁的对区间进行修改操作,单点查询。
基本使用初始化,以及跟新操作int[] diff = new int[n + 1];for (int i = 0; i < n; ++i) { int l = 修改的左区间; int r = 修改的右区间 + 1; int val = 对区间修改的值; diff[l] += val; if (r + 1 < n) diff[r + 1] -= val;}
查询操作int[] res = new int[n];res[0] = diff[0];for (int i = 1; i < n; ++i) { res[i] = res[i - 1] + diff[i];}
基本原理diff[L...]+3 表示对 diff[L...]所有的元素都 +3。diff[R+1...]-3 表示对 diff[R+1...] 所有的元素都 -3。
那么,通过对 diff[R+1...] 所有的元素都 -3,就可以抵消 diff[R+1...] 多余的 +3 操作(该多 ...
计数排序
计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于 1954 年由 Harold H. Seward 提出。计数排序使用一个额外的数组 C,其中第 i 个元素是待排序数组 A 中值等于 i 的元素的个数。然后根据数组 C 来将 A 中的元素排到正确的位置。维基百科:计数排序。
计数排序要求待排序数组必须是整数,而且值域必须明确。
public void countingSort(int[] nums) { // 取最大、最小值 int max = Arrays.stream(nums).max().getAsInt(); int min = Arrays.stream(nums).min().getAsInt(); // 为额外数组 count 开空间 int range = max - min + 1; int[] count = new int[range]; // 统计元素出现次数(需要计算偏移量) for (int num : nums) count[num - min]++; // 求计 ...
拓扑排序
相关题目:剑指 Offer II 114. 外星文字典、802. 找到最终的安全状态。
拓扑排序只能在有向无环图(DAG, Directed Acyclic Graph)中得到正确的结果(在有环图中可以运行拓扑排序,不会报 BUG,但是结果不正确:完成排序的节点个数和总的结点个数不相等),所以,拓扑排序也可以用来检测一个有向图是不是带环。
拓扑排序的结果不是唯一的。这取决于将入度为 0 的节点插入队列的顺序。队列出队顺序为拓扑排序顺序。
与拓扑排序相关的两个概念:
入度(indegree):有多少条边直接指向该节点;
出度(outdegree):由该节点指出的边有多少条。
拓扑排序的基本过程:
起始时,将所有入度为 0 的结点入队。
对队列进行出队操作,出队顺序就是拓扑排序的顺序。对于当前出队元素 v,遍历图中所有和其直接相连接的结点 w,并将 w 的入度减 1。
如果对 w 的入度减 1 后,w 的入度为 0,则将 w 入队。
重复执行步骤 2、3,直至队列为空。
拓扑排序思想很好理解,代码也不难。在我看来难点在于,能够识别出一个问题可以用图建模,并正确的进行建模。
cl ...
记第一次参加力扣周赛
写这篇文章的时候已经是第二次参加力扣周赛了。
上周是我第一次参加力扣周赛,总的来说感觉还行,解对了两题,拿了 7 分(总共 4 题,满分 18 分)。但是这周的周赛只答对了 easy 的题目,第一道 medium 的题目思路是有,但是在细枝末节总是出 BUG,直接搞崩了心态。后面的两题都没来得及看。
我仅有的竞赛经验,就是在专科的时候参加过一个蓝桥杯,还是参加的 C 组。那时候学校里也没有竞赛兴趣小组,我对数据结构的了解也只停留在链表、堆栈、数组、二叉树这种最基本的,还是在选修课上学的。排序算法也只学过选择和冒泡,至于二分、DP 这种算法更是听都没听过。
那时候是先去参加省赛,通过省赛选拔再去参加国赛。省赛我都不知道怎么晋级国赛的,我的解题方法只有 for,一层不行就再来一层。但是就凭借这个 for 循环,在国赛的时候拿了个二等奖。后来就没碰过算法竞赛了。
现在为了找工作开始刷力扣,慢慢学到了各种数据结构、以及各种常用算法(这里强烈推荐一下 bobo 老师的课程,非常的棒,bobo 老师人也非常的棒,强烈推荐)。每天都在力扣做题,到今天已经坚持了五个月了,总共解决了 231 道题。有时 ...