最后
整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
其实面试这一块早在第一个说的25大面试专题就全都有的。以上提及的这些全部的面试+学习的各种笔记资料,我这差不多来回搞了三个多月,收集整理真的很不容易,其中还有很多自己的一些知识总结。正是因为很麻烦,所以对以上这些学习复习资料感兴趣,
}
return dfs(start, target);
}
bool dfs(int start, int target) {
if(start == target) return true;
//如果访问过了就相当于找不到,返回false
if(visited[start]) return false;
//标记start行,表示访问过了
visited[start] = true;
//遍历start行,dfs深搜找target
for(auto& ms : map[start]) {
if(dfs(ms, target)) return true;
}
return false;
}
};
class Solution {
public:
bool findWhetherExistsPath(int n, vector<vector>& graph, int start, int target) {
//方法二:bfs
//用map存储领接表,比用动态数组下标耗费空间小
unordered_map<int, vector > map;
vector visited(n,false);
//存储领接表
for(auto& g : graph) {
map[g[0]].emplace_back(g[1]);
}
queue q;
q.push(start);
while(!q.empty()) {
int top = q.front(); q.pop();
if(top == target) return true;
visited[top] = true;
for(auto& ms : map[top]) {
if(!visited[ms])
q.push(ms);
}
}
return false;
}
};
=====================================================================
//dfs
class Solution {
Map<Integer, List> map = new HashMap<>();
boolean[] visited;
public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) {
visited = new boolean[n];
for(int[] g : graph) {
if(!map.containsKey(g[0])) {
//创建有key的空列表
map.put(g[0], new ArrayList<>());
}
map.get(g[0]).add(g[1]);
}
return dfs(start, target);
}
boolean dfs(int start, int target) {
if(start == target) return true;
if(visited[start]) return false;
visited[start] = true;
//Java需要注意的点,防止map.get(key)空指针异常
if(map.get(start) == null) return false;
for(Integer ms : map.get(start)) {
if(dfs(ms, target)) return true;
}
return false;
}
}
//bfs
class Solution {
public boolean findWhetherExistsPath(int n, int[][] graph, int start, int target) {
Map<Integer, List> map = new HashMap<>();
boolean[] visited = new boolean[n];
LinkedList q = new LinkedList<>();
for(int[] g : graph) {
if(!map.containsKey(g[0])) {
map.put(g[0], new ArrayList<>());
}
map.get(g[0]).add(g[1]);
}
q.add(start);
while(!q.isEmpty()) {
int top = q.pop();
visited[top] = true;
if(top == target) return true;
最后
由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。
本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
5740544)]
[外链图片转存中…(img-w1eIdSLk-1714865740545)]