先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:xhs1999xhs (备注Java)
正文
🐄前言:
- 一学就会的小技巧(一):前缀和
- 一学就会的小技巧(二):差分
- 一学就会的小技巧(三):快速幂
- 一学就会的小技巧(四):龟速乘
- 一学就会的小技巧(五):矩阵快速幂
- 数论基础—素数筛、最大公约数、最小公倍数
- 省赛真题—K倍区间(前缀和,数学,思维)
🌵🌵本文是小技巧系列的最后一篇文章了,在前面的几篇文章中,带大家从快速幂一直拓展到矩阵快速幂,矩阵快速幂最重要的一个应用就是可以根据数列通项加速求数列第n项。
🍄数列加速:
👩🏻🏫以斐波那契数列为例,看看如何利用矩阵快速幂求数列的第n项。
👉🏻思路:
- 附上我的手写笔记,字丑见谅哈哈~😛
- 将数列写成矩阵时上下的顺序也可调换,比如官方题解这样,只是需要进行快速幂的矩阵发生了变化,不影响最终结果,推到过程也是一样的~
🍦AC代码(Java):
class Solution {
public static final long mod = 1000000007;
public static long[][] matrixMultiply(long[][] matrixA, long[][] matrixB) {
int n = matrixA.length, p = matrixB.length, m = matrixB[0].length;
if (p != matrixA[0].length)
return null;
long[][] ans = new long[n][m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
for (int k = 0; k < p; k++)
ans[i][j] += (matrixA[i][k] % mod) \* (matrixB[k][j] % mod) % mod;
ans[i][j] = ans[i][j] % mod;
}
return ans;
}
public static long[][] fastMatrixPow(long[][] matrix, long k) {
int len = matrix.length;
long[][] res = new long[len][len];
for (int i = 0; i < len; i++)
res[i][i] = 1;
while (k > 0) {
if ((k & 1) == 1)
res = matrixMultiply(res, matrix);
matrix = matrixMultiply(matrix, matrix);
k = k >> 1;
}
return res;
}
public int fib(int n) {
if (n < 2) {
return n;
}
long[][] q = {{1, 1}, {1, 0}};
long[][] res = fastMatrixPow(q, n - 1);
return (int)res[0][0];
}
}
- 其实就是上篇文章矩阵快速幂的模板,不能说非常相像,只能说一模一样😛
- 执行时间击败100%,要比常规的解法快很多~
🍌🍌🍌
本文介绍了第六个小技巧——数列加速,利用矩阵快速幂求数列,室友看了直呼牛🍺~
🍍🍍🍍
创作不易,如果觉得本文对你有所帮助的话请动动小手,给博主点个免费的赞吧。🙇🏻♀️
🍉🍉🍉
@作者:Mymel_晗,计科专业大学牲一枚,请大佬们多多关照~
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:xhs1999xhs (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
99xhs (备注Java)**
[外链图片转存中…(img-U0URnMC2-1713689031550)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!