Summary
文章平均质量分 66
阿飞算法
这个作者很懒,什么都没留下…
展开
-
【阿飞算法】面试题集锦
集锦原创 2022-06-10 09:50:46 · 449 阅读 · 0 评论 -
在一个有向图中找环
在一个有向图中找环有向图中边的分类树边(Tree Edge):从一个顶点指向其未访问过的子节点的边。前向边(Forward Edge):从一个顶点指向该顶点的一个非子顶点后裔的边,且接受点被访问过。回边(Back Edge):从一个顶点指向其祖先顶点的边。横跨边(Cross Edge):从一个顶点指向一个已完全访问过的顶点,且其中接受点既不是发起点的的后裔,也不是其祖先。小规律:树边、前向边,都是往前指,即顺着bfs遍历的顺序;回边是往回指,即逆着bfs遍历的顺序;横跨边横着指,即边的两个原创 2021-08-05 20:15:20 · 4816 阅读 · 0 评论 -
畅游设计模式之状态模式
需求实现抽奖UML类图代码实现Statepublic abstract class State { // 扣除积分 - 50 public abstract void deductMoney(); // 是否抽中奖品 public abstract boolean raffle(); // 发放奖品 public abstract void dispensePrize();}RaffleActivity/** * @author原创 2021-07-29 10:29:07 · 127 阅读 · 0 评论 -
畅游设计模式之装饰者模式
畅游设计模式之装饰者模式需求实现咖啡点餐UML类图代码实现Drink@Datapublic abstract class Drink { public String des;//描述 private float price = 0.0f; //计算费用的抽象方法:子类来实现 public abstract float cost();}Chocolate/Milk/Soy//具体的 Decorator, 这里就是调味品public class原创 2021-07-28 21:13:29 · 107 阅读 · 1 评论 -
畅游多线程之交替打印FooBar
1115. 交替打印FooBar方法1:SemaphoreSemaphore是一个计数信号量。从概念上将,Semaphore包含一组许可证。如果有需要的话,每个acquire()方法都会阻塞,直到获取一个可用的许可证。每个release()方法都会释放持有许可证的线程,并且归还Semaphore一个可用的许可证。然而,实际上并没有真实的许可证对象供线程使用,Semaphore只是对可用的数量进行管理维护总结:如果线程要访问一个资源就必须先获得信号量。如果信号量内部计数器大于0,信号量减1,然原创 2021-07-25 15:18:35 · 294 阅读 · 0 评论 -
畅游多线程问题之实战-顺序打印123
顺序打印123//按顺序打印 123 123 123//有这么一个多线程场景问题:有三个线程,线程1执行完成之后线程2执行,线程2执行完之后线程3执行,//线程3执行完成之后线程1执行,整体循环50次,写程序实现部分方法没有使用到三个线程,做个保留方法1:CountDownLatch /** * 多线程按顺序打印 123 123 123 */ static class _1st { public static void main(Strin原创 2021-07-24 10:45:57 · 1066 阅读 · 0 评论 -
畅游多线程问题
畅游多线程问题之顺序打印原创 2021-07-23 15:05:57 · 135 阅读 · 0 评论 -
重学设计模式
重学设计模式问题合辑1.责任链模式分发处理任务//老师有a,b,c,d,e五个任务,分别需要5个同学A,B,C,D,E去处理。//已知ABCDE五个同学分别只能处理他自己对应的任务(对应关系是a->A,b->B,c->C….)。 //老师分配任务只会把任务都交给A,A只会处理自己的任务,不会处理的任务都会交给B….B交给C,//依次类推完成老师的所有任务。写个程序模拟这样的任务处理场景FilterChainimport java.util.ArrayList;impor原创 2021-07-23 14:39:29 · 225 阅读 · 0 评论 -
二叉树路径集锦
二叉树路径集锦257. 二叉树的所有路径方法1:DFS List<String> res = new ArrayList<>(); public List<String> binaryTreePaths(TreeNode root) { dfs(root, ""); return res; } private void dfs(TreeNode root原创 2021-07-07 18:11:38 · 116 阅读 · 0 评论 -
二维矩阵的常见转换技巧
技巧1:二维矩阵按索引拍平到一维数组如下图所示,每一个二维矩阵对应的,按第1行到第m行依次排列所得到的一维数组的坐标,可以互相转换如第2行第3列的16这个数,其矩阵的坐标是(1,2),而映射到一维数组的时候,其对应的下标索引idx=6idx=6=i*n+j=1*4+2=6而如何通过idx=6反向得到矩阵的坐标呢?i=idx/n=6/4 =1j=idx%n=6%4 =2得到矩阵的坐标为(i,j) ==>(1,2)技巧2:将矩阵当成二进制转化成十进制背景知识对于十进制整原创 2021-06-30 09:27:31 · 2128 阅读 · 2 评论 -
向上取整向下取整探讨
符号向下取整符号:⌊x⌋⌊x⌋⌊x⌋,表示小于等于 xxx 的最大的整数。常用于分数,比如分数的向下取整 ⌊xy⌋⌊\cfrac {x} {y}⌋⌊yx⌋。向上取整符号:⌈x⌉⌈x⌉⌈x⌉,与向下取整符号相对,表示大于等于 xxx 的最小的整数。向上取整先放结论:左边式子表示aaa对b+1b+1b+1向上取整,右边是取整的算法ceil(ab+1)ceil(\cfrac {a} {b+1})ceil(b+1a) = a+bb+1\cfrac {a+b} {b+1}b+1a+b当aaa是原创 2021-06-29 22:26:55 · 11884 阅读 · 1 评论 -
会议室调度算法集锦
会议室调度算法集锦920.会议室I同LeetCode 252对会议安排的list按 开始时间从小到大排序遍历当前的list,每次取当前的会议与下一个会议,如果当前的会议的结束时间> 下一个会议的开始时间,说明冲突了,因为当前的会议还没结束,下一个会议却开始了,这样没办法去参加下一个会议 public boolean canAttendMeetings(List<Interval> list) { list.sort(((o1, o2)原创 2021-03-17 19:34:34 · 992 阅读 · 0 评论