摘要: 1.为什么这道题要用这个解法,是怎么联想到这个解法的 2. 这个解法一般的流程是什么,用最简单的语言总结。 3. 之前为什么没有想到这个解法,是哪里卡住了。 4.这道题在同类的解法中的变化是什么。 阅读全文
posted @ 2021-03-16 21:52 wsshub 阅读(47) 评论(0) 推荐(0)
摘要: 并查集解法 class Union { // 用一个一维数组表示联通关系。记录该数组每个节点的父节点的位置 int[] parent; int cnt = 0; Union(int length) { this.parent = new int[length]; } // 查,且路径压缩。就是查找该 阅读全文
posted @ 2024-08-09 01:41 wsshub 阅读(22) 评论(0) 推荐(0)
摘要: class Solution { //建图,bfs public boolean canFinish(int numCourses, int[][] prerequisites) { if(prerequisites.length==0)return true; int[] inDegree=new 阅读全文
posted @ 2021-10-09 20:19 wsshub 阅读(30) 评论(0) 推荐(0)
摘要: Arrays.sort(intervals,new Comparator<int[]>(){ public int compare(int[] o1,int[] o2){ if(o1[0]!=o2[0]) return o1[0]-o2[0]; else return o1[1]-o2[1]; } 阅读全文
posted @ 2021-10-09 17:46 wsshub 阅读(333) 评论(0) 推荐(0)
摘要: 一、什么是循环依赖 所谓循环依赖是指两个或两个以上的bean互相引用对方,最终形成了一个依赖的闭环。 说到循环依赖好像就会有一种先入为主的印象,总感觉是自己在代码实现上出现了问题,其实循环依赖是与实际业务相关的,某些业务在实现的时候可能就是需要bean A依赖bean B,同时bean B又依赖be 阅读全文
posted @ 2021-09-30 16:11 wsshub 阅读(121) 评论(0) 推荐(0)
摘要: 并查集注意两点: 建立边关系用join; 边关系建立完之后也要对每个节点做一个找父亲的动作,因为边关系的建立仅仅在原父节点之间确定,而原父节点下的子节点无法及时知晓新的父节点是谁。 比如有A节点,B节点,B节点下有b1,b2,b3。建立边关系时仅仅是让A变成B的父亲,这就结束了,但是b1,b2,b3 阅读全文
posted @ 2021-08-25 01:58 wsshub 阅读(32) 评论(0) 推荐(0)
摘要: 并查集的父节点数组正确建立的关键是: 用union(join)建立边关系。 并查集一般用来数连通图个数。 class Solution { public int findCircleNum(int[][] isConnected) { int[] parent=new int[isConnected 阅读全文
posted @ 2021-08-25 00:08 wsshub 阅读(51) 评论(0) 推荐(0)
摘要: 注意数字越界。 十叉树的前序遍历问题。 十叉树的节点值:1的孩子有10,11.....19,10的孩子有100,101,102...109。 cur指向当前节点值。 高效办法是,计算以cur为根的子树的节点个数,就可以知道往右走还是往子树走了。 计算节点值的方法是按层计算。 class Soluti 阅读全文
posted @ 2021-08-16 00:01 wsshub 阅读(44) 评论(0) 推荐(0)
摘要: 三种解法:dfs到记忆化递归再到动态规划 dfs(超时): class Solution { public int minimumTotal(List<List<Integer>> triangle) { return dfs(triangle,0,0); } int dfs(List<List<I 阅读全文
posted @ 2021-08-09 18:41 wsshub 阅读(35) 评论(0) 推荐(0)
摘要: 滑动窗口: class Solution { public int minSubArrayLen(int target, int[] nums) { int i=0; int j=0; int sum=0; int min=Integer.MAX_VALUE; while(j<nums.length 阅读全文
posted @ 2021-08-07 20:35 wsshub 阅读(33) 评论(0) 推荐(0)
摘要: 对于一个数组。 lo=0; hi=nums.length; mid=(lo+hi)/2中点靠右 lo=0; hi=nums.length-1; mid=(lo+hi)/2中点靠左 无论是哪一个循环条件是lo<hi 下标更新都是 lo=mid+1 hi=mid 注意被排除的[0,lo)和[hi,n)里 阅读全文
posted @ 2021-08-07 18:24 wsshub 阅读(19) 评论(0) 推荐(0)