最后
好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。
做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。
这篇文章用于记录蓝桥杯刷题过程中遇到的高频且难的知识点,会不断更新。
一.动态规划
1.爬楼梯问题:(acwing821.跳台阶) (最暴力的dfs -> 记忆化搜索 -> 递推(dp))
假设有n级台阶一次可以走一步或两步,那么从第一阶到第n阶一共有多少种可能。
思路:
从第一阶到第n阶的总次数可以分成第一阶到第n-1阶和第一阶到第n-2阶
代码如下:
import java.util.Scanner;
//假设有n级台阶一次可以走一步或两步,那么从第一阶到第n阶一共有多少种可能
public class dpTest爬楼梯_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(dp(n));
}
//从第一阶到第n阶的总次数可以分成第一阶到第n-1阶和第一阶到第n-2阶
public static int dp(int n) {
if(n == 1) {
return 1;
}
else if(n == 2) {
return 2;
}
else {
return dp(n - 1)+ dp(n - 2);
}
}
}
可以用记忆化搜索优化以减少重复计算,代码如下:
import java.util.Scanner;
//用记忆化搜索优化爬楼梯问题
//记忆化搜索是指在递归过程中把子结果的答案存储起来以减少重复计算
public class dpTest爬楼梯_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] mem = new int[n + 1];
System.out.println(dfs(n,mem));
sc.close();
}
**总结**:
* 函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流;
* 它提倡着 纯函数 / 函数复合 / 数据不可变, 谨慎对待函数内的 状态共享 / 依赖外部 / 副作用;
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
> Tips:
> 其实我们很难也不需要在面试过程中去完美地阐述出整套思想,这里也只是浅尝辄止,一些个人理解而已。博主也是初级小菜鸟,停留在表面而已,只求对大家能有所帮助,轻喷🤣;
>
> 我个人觉得: 这些编程范式之间,其实并不矛盾,各有各的 **优劣势**。
>
> 理解和学习它们的理念与优势,合理地 **设计融合**,将优秀的软件编程思想用于提升我们应用;
> 所有设计思想,最终的目标一定是使我们的应用更加 **解耦颗粒化、易拓展、易测试、高复用,开发更为高效和安全**;