java
文章平均质量分 61
凌乱533
但行好事,莫问前程;但问耕耘,莫问收获;
展开
-
再谈Comparator与Comparable接口
3.Comparator接口提供了一个“事后补救”措施,它其实是可以独立于一个类之外的,也就是说你可以先定义你的类,然后之后再给该类定义一个比较器,那么这个时候你就可以创建一个“比较器类”,Comparator 参数为待比较的类,然后当某个集合想要使用这个新定义的比较器进行排序时,只需要将这个比较器的实例传到相应的比较器参数上就好了。这是一种无侵入的做法。若保证升序排列,要返回o1-o2,降序则o2-o1。-1:前面的数后面的数,是降序(从大到小)排列。原创 2022-08-19 16:35:10 · 300 阅读 · 1 评论 -
由反转链表学习递归算法,寻求递推公式而不是层层调用再返回
这个思路对写递归代码来说,还是比较简单适用的,比我看到的这些把递归掰开来揉碎了来讲的要更容易出代码**。希望对写递归还比较迷茫的同学们有所帮助,如果我写的对你有帮助,还望大家能多点赞转发。 ### 先放结论 **Rules Number One**,基本上,**所有的递归问题都可以用递推公式来表示。有了这个递推公式,我们就可以很轻松地将它改为递归代码。**。所以,遇到递归不要怕,先想**递推公式**。 ##### 例1: (比较明显的能递推公式的问题)问题:斐波那契数列的第n项 递推公式:f(..转载 2022-01-07 21:50:04 · 208 阅读 · 0 评论 -
KMP算法
【参考资料】关于KMP算法,大家可以查阅博客园的这篇文章:阮一峰:字符串匹配的KMP算法这篇解释文章相当简明,当然july的这篇文章也可以读一读:六之续、由KMP算法谈到BM算法【算法原理】这里抄录第一篇参考资料的例子:下面,我用自己的语言,试图写一篇比较好懂的 KMP 算法解释。 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2..转载 2021-12-23 22:56:51 · 83 阅读 · 0 评论 -
Java HashMap源码分析
、HashMap的底层实现原理。以jdk 7为例******** HashMap map = new HashMap();* 在实例化以后,底层创建了长度为16的一维数组Entry[] table.* ...可能已经执行过多次put...* map.put(key1,value1):* 首先,调用key1所在类的hashCode()方法计算key1哈希值,此哈希值经过某种计算以后,得到在Entry数组中的存放位置* 如果此位置上的数据.原创 2021-12-21 23:06:55 · 563 阅读 · 0 评论 -
LeetCode 42.接雨水 平凡解法+DP
解题思路平凡解法:感觉这个题的难点在于理解题意,找出具体位置上的雨水是如何计算得出的就好办了,显然一个位置所能存放雨水的值为其两边的最大的值的较小值减去在该位置的柱子长度既可以求得。那么遍历所有的位置,并在遍历的同时求某个位置上的左边最大值和其右边最大值既可以求得该位置的储水量。求和即可得到答案。整体时间复杂度为O(n2)。动态规划:既然要求所有位置的左边最大值,那么我们可以采用一个dp数组来记录每个位置上的左边最大值,遍历求这个leftMax[]的值即可,每个位置只需要对比当前位置的高度和前一个原创 2021-10-10 11:13:49 · 117 阅读 · 0 评论 -
Leetcode 502
502. IPO难度困难156收藏分享切换为英文接收动态反馈假设 力扣(LeetCode)即将开始IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多k个不同的项目。帮助 力扣 设计完成最多k个不同项目后得到最大总资本的方式。给你n个项目。对于每个项目i,它都有一个纯利润profits[i],和启动该项目需要的最小资本capital[i]。最初,你的资本为w。当你完成...原创 2021-09-08 15:55:33 · 122 阅读 · 0 评论 -
HotSpot虚拟机演进之方法区的改变
方法区与java堆一样都是各个线程共享的内存区域,它用于存放类型信息,域信息,常量,JIT后的代码缓存等数据。原本在方法区中的静态变量、字符串常量池在jdk7以后便迁移到了堆中。JDK8版本中彻底放弃了永久代的,改为了采用本地内存来实现方法区,即元空间MetaSpace。静态变量、字符串常量池仍然存放在堆里。...原创 2021-02-20 00:01:37 · 179 阅读 · 0 评论 -
java基本数据类型和引用数据类型的调用传递的区别
(1)基本数据类型:就是进行了值的传递把一份数据拷贝了之后传递过去(2)引用数据类型:实际上也是进行了数据拷贝然后传过去,实际上也是值传递,只不过传递过去的值和原有的值指向了同一个对象 所以在调用的方法中可以对原来的数据进行影响,这是因为二者指向的是同一个对象。 但这不是按引用调用!如下代码可证明这一点:对象之间的赋值是需要指针相互赋值的,而由于这里User x和y原创 2018-02-06 22:13:07 · 17409 阅读 · 0 评论