![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
monkey1008611
十四线小程序猿
展开
-
java 哲学家就餐模拟
问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法: 每个哲学家必须确定自己左右手的筷子都可用的时候,才能同时拿起两只筷子进餐,吃完之后同时放下两只筷子。模拟:clas...原创 2019-10-19 15:54:09 · 364 阅读 · 0 评论 -
(转载)java map的详细分类介绍与应用
https://www.cnblogs.com/lzq198754/p/5780165.html。超详细转载 2019-05-16 18:22:49 · 710 阅读 · 0 评论 -
用局部替换方式求解最小生成树 java
从T=空集开始for(图中每条边e) if 加入e不构成环,则 T=T+e else e‘ 是环上权重最大的边,T = T+e'解:利用邻接表形式存储图,用另一张图,每一次向新图里面加入一条边,从加入边的顶点开始做dfs遍历。如果遇到后向边,就说明图中有环,找出最大的边,删掉该边,再加入边,继续dfs过程,直到所有边都加入。这里图用hashmap存...原创 2019-05-17 22:35:39 · 364 阅读 · 0 评论 -
bellman-Ford查找输出一个负环(java)
设一个加权有向图中有负权重的边,设图中存在若干负环,设计算法找出其中一个负环。找负环考虑的是bellman-Ford算法,它是用来找最小生成树的算法,算法思想是循环|V-1|次,每次都对所有的边进行relax操作,最后再一次relax操作,如果还能被relax,就说明存在负环。要找到负环,就从这条边的端点开始。重要的具体实现代码: 1:存储 用hashMap存储邻接链表结构...原创 2019-05-24 11:41:05 · 2210 阅读 · 0 评论 -
加权有向完全图中找最小TSP圈
描述:一个加权有向完全图,找出里面的最小TSP圈。可以使用动态规划,差分,枚举等。(顶点数不多余5)这是算法的实验题,TSP问题是NP难问题,我用的是动态规划。解:一、动态转移方程。(假设有5个点) 变量K,已经便利过K个顶点,K=1,2,3,4,5,K=1表示刚从V1出发,K=5表示已经回到起点。 状态变量xk=(i, Sk); 已遍历k个节点,...转载 2019-06-02 15:53:15 · 1199 阅读 · 0 评论 -
java 设计模式超详细
http://c.biancheng.net/view/1338.html转载 2019-07-19 14:27:38 · 364 阅读 · 0 评论 -
java 异常:throw throws finally
异常分为error和exception,他们都是throwable的子类。error由jvm抛出,会导致程序的中断。StackOverflowError OutOfMemoryError 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemory Error异常。ex...原创 2019-07-19 16:43:26 · 579 阅读 · 0 评论 -
Java 修饰符
一:修饰权限:public、protected、默认不写、private二:修饰特征:final、static、abstract、native、transient、synchonized、volatilenative:用不到,用于调用本地其他语言写的方法。比如hashCode方法;public native inthashcode();没有方法体,通过native关键字调用其他语言...原创 2019-08-13 17:14:09 · 64 阅读 · 0 评论 -
闰年判断
可以被4整除且不能被100整除 或者 可以被400整除final static int[] days = {31,28,31,30,31,30,31,31,30,31,30,31}; public static int dayOfYear(String date) { int result = 0; int values[] = new int[3]; for(int ...原创 2019-09-03 22:48:36 · 1526 阅读 · 0 评论 -
jvm:线程程序私有区域与程序共享区域详解
私有:程序计数器、java虚拟机栈、本地方法栈程序计数器:当前线程所执行的字节码行号指示器。通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型 : 每个方法执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直...原创 2019-09-21 21:00:23 · 1095 阅读 · 0 评论 -
java 的对象加载过程与堆栈方法区
.java文件被javac.exe编译为.class文件 通过类加载器加载.class 文件 验证是否符合jvm编译规则,一般用javac.exe编译的是不会有问题的,但是不排除有人用其他方法生成.class; 分配空间。后面会说到这里 java.exe执行-》2:类加载是双亲委托机制;当本地类加载器加载一个class时,它首先不会自己去尝试加载这个类,而是把类加载请求委派...原创 2019-09-28 16:27:40 · 346 阅读 · 0 评论 -
347. Top K Frequent Elements
桶排序:找出出现次数大于K的数字:public static List<Integer> topKFrequent(int[] nums, int k) { List<Integer>[] bucket = new List[nums.length+1];//桶,list数组,为每个次数建一个list。一定要+1.否则当nums全为一个数时后面会越界 ...原创 2019-04-09 21:11:16 · 87 阅读 · 2 评论 -
605.种花问题
这是一道easy的问题,但是我觉得需要注意的点值得关注:种花需要两个其两边都是0才能种下,但是开头和结尾有两个0(00- -00)的时候是可以种花的,有两种方法:一:在开头和结尾加上0,但是这样对空间不友好; 二:单独判断。下面的做法是不加上0,利用短路或“||”,来对开头和结尾做处理,这样的前提是要把i==0, i==len-1放在或语句的前面判断,这样后面的就会被短路,从...原创 2019-04-11 22:46:03 · 206 阅读 · 0 评论 -
406. 根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。思想:贪心算法。先把这些人按高-->矮排列,因为高个子在前面,矮个子插入的时候,不会对高个子产生影响。比如前面是【7,0】要插入【5,0】,把【5,0】放在最前面对【7,0】没有影响。而如果反过来【7,0】插入...原创 2019-04-11 21:13:15 · 314 阅读 · 0 评论 -
929. Unique Email Addresses(java)
经过一轮来不及准备的面试,我应该知道了自己几斤几两了,,, 奋发刷题,记录下自己的解题过程,以及一些遇到的需要注意的问题。意向java方向,java还是在大一学的,大三重拾处处是坑。上题:大意是要去掉email里面本地名里面的 “.” 和“+”后面的部分。 public static int numUniqueEmails(String[] emails) { i...原创 2019-03-17 16:07:40 · 211 阅读 · 0 评论 -
804. Unique Morse Code Words(java)
跟邮件的很像class Solution { public int uniqueMorseRepresentations(String[] words) { int num=0; String[] alphabet = new String[]{".-","-...","-.-.","-..",".","..-.",&quo原创 2019-03-17 16:36:51 · 102 阅读 · 0 评论 -
961. N-Repeated Element in Size 2N Arra(java)
class Solution { public int repeatedNTimes(int[] A) { int num=0; int[] re = new int[10000]; for(int i=0; i<re.length; i++) re[i]=-1; ...原创 2019-03-17 18:39:00 · 74 阅读 · 0 评论 -
905. Sort Array By Parity(java)
一开始想到了快排之类的类似思想 int[] B = new int[A.length]; int f=0, l=A.length-1; for(int i=0; i<A.length; i++) { if(A[i]%2 == 0)//偶数 B[f++] = A[i];...原创 2019-03-17 20:39:55 · 81 阅读 · 0 评论 -
832. Flipping an Image(java)
int len = A.length; int[][] temp = new int[len][]; for(int i=0;i<len;i++) { int lenb = A[i].length; temp[i] = new int[lenb]; for(int j...原创 2019-03-17 21:23:01 · 113 阅读 · 0 评论 -
547. Friend Circles (java)
class Solution { public static void dfs(int[][] M, int[] visited, int i) { for (int j = 0; j < M.length; j++) { if (M[i][j] == 1 && visited[j] == 0) { ...原创 2019-03-18 00:08:08 · 152 阅读 · 0 评论 -
524. Longest Word in Dictionary through Deleting
最近在刷LeetCode的题解,遇到这样的题,解答很多是用递归做的,我对递归不是很熟悉,每次都会尽量避免使用递归。看到这个题解感觉还不错,就理解了一下。有一个最长字符串的初始化,遍历链表,每次都跟链表里的字符串比较,看看长度是否有效,以及字典序。 如果链表元素有成为最长字符串的可能的话,就用isValued来判断通过删除S的某些字符,能否构成该链表元素。个人觉得这个方法非常妙,适合我的...原创 2019-03-24 23:54:21 · 115 阅读 · 0 评论 -
LeetCode 双指针的应用
在看一位大佬关于LeetCode的题解时,发现他对于里面可以双指针的问题都做了总结。个人觉得双指针很简单方便,可以降低复杂度。有序数组两数之和 && 两数平方和:头尾各设置一个指针,根据结果大小来判断是哪一个指针移动。前提是有序。反转字符串中的元音音节:头尾设置指针,遇到元音音节的时候不移动,直到两个都是元音音节之后移动。回文字符串:设置头尾指针,依次对比,发现不一...原创 2019-03-25 11:46:29 · 470 阅读 · 0 评论 -
java 排序算法总结
一:插入排序。 思想:第一个为一个有序数组,之后每一个都向该数组中插入,从后往前,大于待插入数字的后移。 复杂度:插入排序是稳定的。时间复杂度O(N^2),空间负责度O(1);public static void sort(int[] x) { int n = x.length; for( int i=1; i<n; i++) { ...原创 2019-04-05 18:05:24 · 220 阅读 · 0 评论 -
java comparable 和 comparator
https://www.cnblogs.com/szlbm/p/5504634.htmlhttps://www.jianshu.com/p/701c5d77fd5b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation个人觉得这两篇不错。...转载 2019-04-11 20:01:14 · 70 阅读 · 0 评论 -
leetCode 四叉树和两数求和笔记
四叉树考察了递归,我一直对递归的思想不是特别理解,最后还是看了其他人的题解才写出来。具体是每次都比较两个四叉树的相同节点,①如果两个都是叶子节点,且其中有一个的val为true;则返回该节点。若都是叶节点,但是其中一个是false,则返回另一个节点。②如果两个节点都不是叶节点,则依次比较它们的相同位置节点;此处就是递归的地方,③递归的终点是四个节点的返回都是叶节点并且它们的v...原创 2019-03-19 20:20:12 · 107 阅读 · 0 评论