- 博客(67)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java23设计模式---class10、享元模式(FlyWeight)
文章目录一、基本介绍1、定义2、优点3、缺点4、角色1)抽象享元类2)具体享元类3)享元工厂类4)组合享元类二、应用情景1、线程池2、String3、Integer4、五子棋三、与其他模式的搭配使用三、代码解析一、基本介绍1、定义享元模式(FlyWeight),又称为蝇量模式,常用于有着大量重复使用的细粒度对象时。实质上是一种共享技术。2、优点1)利用享元池,可以使得用户在调用一个对象时可以不必去new,只需要在享元池中直接获取即可,节约了内存空间。2)3、缺点1)逻辑会更加的复杂。2)对
2021-03-01 10:31:50
2629
19
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解java集合框架
文章目录一、集合框架详解1、Collection接口1)collection接口2)AbstractCollection抽象类3)SortedSet接口4)AbstractList和AbstractSet5)继承基类List的类6)继承基类Set的类2、Map接口二、集合的意义和使用1、意义2、使用1)线程安全PK性能高效2)链表PK数组3)重复pk单一4)有序pk无序一、集合框架详解下图转载自:https://blog.csdn.net/weixin_43314519/article/details
2021-02-28 15:24:37
1811
29
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Leetcode04--给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
文章目录题目一、归并算法二、二分查找法题目给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数2示例 2: 输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 =
2021-02-15 22:28:06
7870
5
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java23设计模式---class03.工厂模式
工厂模式文章目录工厂模式一、工厂模式的背景1、工厂的概念2、为什么要有工厂?二、工厂模式的实现1)工厂方法2)抽象工厂一、工厂模式的背景1、工厂的概念 任何可以产生对象的类或者是方法,都可以称为一个工厂。2、为什么要有工厂? 我们知道,得到对象直接new一个就可以了,为什么要有通过类或者方法去得到呢?主要是为了能更灵活的修改与维护,试想:如果都通过new去得到,当new的次数较多时,与代码耦合度较高,后期改动会非常麻烦。二、工厂模式的实现1)工厂方
2021-02-01 19:14:28
158
1
原创 matplotlib的plot.imshow 颜色选择
颜色映射定义了从数据值到颜色的映射方式,它可以影响图像的颜色呈现。‘plasma’:这是另一种从紫色到黄色的颜色映射,类似于’viridis’,但颜色分布稍有不同。‘nipy_spectral’:这是一种具有丰富颜色的颜色映射,适用于多类别的分类问题。‘hot’:这是一种从黑色到红色、黄色和白色的颜色映射,用于表示高温度或热点。‘viridis’:这是一种逐渐从紫色到黄色的颜色映射,用于表示数据的渐变。‘jet’:这是一种常用的颜色映射,从蓝色到红色经过绿色,用于显示热图等。
2023-11-08 10:23:41
474
原创 Latex中摘要格式(无大标题)
quote有左右缩进且无Abstract大标题,{10pt}控制字体大小 {12pt}控制行距 \hspace{2em}首行缩进。\fontsize{10pt}{12pt}\selectfont{ \hspace{2em}摘要:…
2023-11-07 15:39:39
1112
原创 Latex双栏文章
\usepackage{multicol}\setlength\columnsep{1cm}%双栏间距长度\begin{multicols}{2}%二栏文章\end{multicols}
2023-11-07 15:05:56
99
原创 Leetcode60、排列序列
一、题目给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。示例 1:输入:n = 3, k = 3输出:“213”示例 2:输入:n = 4, k = 9输出:“2314”示例 3:输入:n = 3, k = 1输出:“123”提示:1 <= n <= 91 <=
2021-05-03 16:44:13
170
原创 集合类转化成二维数组
方法1、遍历集合 int m = ans.size(); int[][] res = new int[m][2]; for (int i = 0; i < m; i++) { res[i] = ans.get(i); } return res;方法二、调用库函数即可return ans.toArray(new int[ans.size()][]);...
2021-05-02 16:10:02
420
原创 Leetcode50.Power(x,n)
文章目录一、题目二、代码实现1、遍历实现二、递归三、递归的优化一、题目实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 < x < 100.0-231
2021-04-28 15:09:48
214
原创 remove(index)和remove(Object)
遇见了一个挺有意思的bug删除list中的元素8时list .remove(8)报错了,说超过了list的上界,反应过来原来是因为方法重载出现的一个问题,只要使用list.remove(Integer.valueOf(8))就可以了。后来想一想,如果当时list的长度足够大,程序没有出现超下标的错误,那执行下来的结果不理想的话,这个bug可能要找好几天都找不出来,还是挺幸运。...
2021-04-18 16:13:21
342
原创 待解决问题--静态全局变量
在刷leetcode的时候遇见的一个很有意思的问题,把一个局部变量申明为静态全局变量时间差异之大令我惊讶,看了不少关于static和全局与局部变量的文章还是不是太明白。
2021-04-16 22:37:11
82
原创 Leetcode29. 两数相除
文章目录一、题目二、代码实现一、题目给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.3
2021-04-05 20:19:29
159
原创 Leetcode28、实现strStr()
文章目录一、题目二、代码实现1)双指针滑窗法2)KMP一、题目实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1输入:haystack = “cad”, needle = “cc”输出:-1示例2输入:haystack = null, needle = “mn”输出-1示例3输入:haystack = “mhdk
2021-04-04 00:32:08
105
1
原创 Leetcode27.移除元素
文章目录一、题目二、代码实现1)原始代码2)优化代码一、题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你
2021-04-03 23:12:45
106
原创 Leetcode26. 删除有序数组中的重复项
文章目录一、题目二、代码实现1)原始代码2)代码优化一、题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:
2021-04-03 22:39:39
105
原创 Leetcode25. K 个一组翻转链表
文章目录一、题目二、代码实现一、题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例 2:输入:head = [1,2,3,4,5],
2021-04-03 16:44:38
100
原创 Leetcode24. 两两交换链表中的节点
文章目录一、题目二、代码实现1)迭代2)递归一、题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100来源:力扣(LeetCode)
2021-04-03 15:25:15
89
原创 Leetcode23. 合并K个升序链表
文章目录一、题目二、代码实现一、题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:
2021-04-02 17:28:07
122
原创 Leetcode22.括号生成
文章目录一、题目二、代码实现1、暴力2、优化一、题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-par
2021-04-02 00:17:09
104
原创 浅谈Java反射机制
java的反射机制是java中最基础而且最重要的知识之一。文章目录一、类装载器ClassLoader1、java文件的执行过程2、类装载器的工作机制1)、背景2)、什么是全盘负责呢?3)、什么是双亲委托呢?二、Class对象1、基本介绍2、Class中获取信息1、主要的类2、代码示例1)示例一2)示例2一、类装载器ClassLoader1、java文件的执行过程【.java->.class(javac)】+类库中的.class->类装载(ClassLoader)->GIT即时编.
2021-03-31 23:37:58
263
4
原创 Leetcode21.合并两个有序链表
文章目录一、题目二、代码实现一、题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l
2021-03-31 23:35:53
76
原创 Leetcode20. 有效的括号
文章目录一、题目二、代码实现一、题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输
2021-03-31 22:12:30
64
原创 Leetcode19. 删除链表的倒数第 N 个结点
文章目录一、题目二、实现一、题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 100
2021-03-31 15:30:48
87
原创 按要求生成指定数组
文章目录一、题目二、代码实现1、算法分析2)代码实现一、题目输入一个int类型的值N,构造一个长度为N的数组,并返回,要求:对任意i<k<j,都满足arr[i]+arr[j]!=2arr[k]二、代码实现1、算法分析可以用递归法去解决我们要抓住两个特性:1)如上图所示,如果有一个全是奇数的符合条件的数组和一个全为偶数符合条件的数组,那么将它们组合,这个数组仍然符合题目所要求的条件。【注】我们知道,2arr[k]是偶数,所以,如果使得arr[i]+arr[j]是奇数就当然满足
2021-03-29 22:56:05
503
6
原创 在给定字符串str中找到完全匹配的给定字串aim的初始位置
文章目录一、题目二、代码实现一、题目在给定字符串str中找到完全匹配的给定字串aim的初始位置,如果str中没有相应匹配的位置,返回-1示例1aim=“abc”,str=“aabcde”返回1示例2aim=“aa”,str=“abcabcb”返回-1示例3aim=“bcb”,str=“wijbcb”返回3二、代码实现常见的有三种解法:1)排序代码中findSubstring1()方法,时间复杂度O(n^2 logn)2)运用ascll码数组代码中findSubs
2021-03-29 14:51:05
108
原创 用BST的后序遍历数组构造出原始BST
文章目录一、题目二、实现一、题目用BST的后序遍历数组构造出原始BST二、实现如下面代码,process0()为原始方法,时间复杂度为O(n^2),process1为采用了二分查找法优化后的优化方法,使得时间复杂度低至O(nlogn) bug积累 1) 凡是把一个整体,一分为n个小部分,例如二分查找法、将树分为左树和右数的时候容易出现堆溢出情况(无限循环),所以写完算法的时候要注意模拟边界情况。 2)树是由结点对象组合而
2021-03-28 16:28:09
121
原创 【面试题】已知f()函数以概率p输出1,以概率1-P输出0。要求实现g()等概率的输出1和0
文章目录一、题目二、解题方法一、题目已知f()函数以概率p输出1,以概率1-P输出0。要求实现g()等概率的输出1和0二、解题方法最常见的方法就是让该函数两次输出,两次输出结果为01和10的概率肯定是一样的。【例子】package leetcode.com.zuoshen;import java.util.Random;public class EqualProbabilityReturn {public static void main(String[] args) { int[]
2021-03-26 22:58:25
482
原创 随机函数等概率返回问题
文章目录一、题目二、解题思路1、步骤2、例子一、题目给你一个随机函数f,等概率返回a-b中的一个数字,在不改变随机函数机制的情况下,实现c-d的等概率返回。二、解题思路1、步骤分两步即可1)构造出等概率返回0、1的随机函数f1()2)通过函数f1()构造等概率返回c-d的函数2、例子例子 a-b为2-8,c-d为3-9package leetcode.test;import java.util.Random;public class ReturnTest {public s
2021-03-26 22:32:39
208
原创 Leetcode.面试题17.21. 直方图的水量
文章目录一、题目二、解题方法1)暴力法2)预处理数组优化三、双指针一、题目给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:https://leetcode-
2021-03-24 14:34:45
195
原创 Leetcode18.四数之和
文章目录一、题目二、代码实现一、题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。【注意】:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:nums =
2021-03-23 23:37:04
153
1
原创 Leetcode17. 电话号码的字母组合
文章目录一、题目二、代码实现一、题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:
2021-03-23 17:01:32
62
1
原创 Leetcode16、最接近的三数之和
文章目录一、题目二、代码实现一、题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] &l
2021-03-20 14:16:20
41
2
原创 Leetcode15、三数之和
文章目录一、题目二、代码实现一、题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.
2021-03-19 18:15:14
42
原创 Maven如何快速的寻找依赖
1、进入此网站2、输入任意关键词搜索,可以是包名,也可以是groupId,ArtifactId。例如我搜索Spring,然后点击您需要的内容3、点击您需要的版本4、然后您就会找到你所期待的依赖了
2021-03-15 19:30:52
1309
原创 leetcode14.最长公共前缀
文章目录一、题目二、代码实现一、题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]
2021-03-03 23:09:39
157
12
原创 Leetcode13.罗马数字转整数
文章目录一、罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。二、解题思路1、贪心2、暴力3、特殊情况替换一、罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两
2021-03-03 22:35:44
117
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人