自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 java设计模式:单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

2023-11-08 14:28:38 81

原创 2023-11-06 leetcode 每日一题 最大单词长度乘积

如果不存在这样的两个单词,返回 0。输入:words = [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输入:words = [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”]输入:words = [“a”,“aa”,“aaa”,“aaaa”]解释:这两个单词为 “abcw”, “xtfn”。解释:这两个单词为 “ab”, “cd”。解释:不存在这样的两个单词。

2023-11-06 11:17:26 91

原创 2023-10-27 leetcode 每日一题 切割后面积最大的蛋糕

输入:h = 5, w = 4, horizontalCuts = [1,2,4], verticalCuts = [1,3] 输出:4 解释:上图所示的矩阵蛋糕中,红色线表示水平和竖直方向上的切口。请你按数组 horizontalCuts 和 verticalCuts 中提供的水平和竖直位置切割后,请你找出 面积最大 的那份蛋糕,并返回其 面积。horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离。verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口的距离。

2023-10-27 16:04:39 92

原创 ReentrantLock 加锁释放锁 源码解析

ReentrantLock是一个可重入互斥锁,互斥表示在同一个时间点只能被一个线程锁持有;可重入表示,ReentrantLock锁可以被同一个线程多次获取。ReentrantLock有公平和非公平的区别,通过一个FIFO的等待队列来管理获取该锁所有线程的在“公平锁”的机制下,线程依次排队获取锁;而“非公平锁”在锁是可获取状态时,不管自己是不是在队列的开头都会获取锁。

2023-10-26 17:49:07 109

原创 2023-10-24 leetcode 每日一题 掷骰子等于目标和的方法数

给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种方式中)滚动骰子的数量,使正面朝上的数字之和等于 target。这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k。得到 7 的和有 6 种方法:1+6 2+5 3+4 4+3 5+2 6+1。输入:n = 30, k = 30, target = 500。输入:n = 1, k = 6, target = 3。输入:n = 2, k = 6, target = 7。解释:你扔一个有 6 个面的骰子。

2023-10-24 21:47:48 48

原创 2023-10-22 leetcode 每日一题 做菜顺序

一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i]*satisfaction[i]。解释:去掉第二道和最后一道菜,最大的 like-time 系数和为 (-1。解释:去掉第二道和最后一道菜,最大的 like-time 系数和为 (-1。输入:satisfaction = [-1,-8,0,5,-9]输入:satisfaction = [-1,-8,0,5,-9]

2023-10-22 21:01:13 44

原创 2023-10-19 leetcode 每日一题 同积元组

给你一个由 不同 正整数组成的数组 nums ,请你返回满足 a * b = c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素,且 a!输入:nums = [1,2,4,5,10]输入:nums = [2,3,4,6]

2023-10-19 16:48:16 52

原创 SpringBoot自动装配原理

下面是spring-boot-autoconfigure-2.5.12.jar中的META-INF文件夹下的spring.factories文件里EnableAutoConfiguration对应的自动装配组件类的完全限定类名。druid-spring-boot-starter-1.2.6.jar 这是阿里巴巴的druid,在这个jar包的META-INF文件夹下的spring.factories文件里有EnableAutoConfiguration对应的自动装配组件类的完全限定类名。

2023-10-19 15:22:47 30

原创 2023-10-18 leetcode 每日一题 执行 K 次操作后的最大分数

输入:nums = [1,10,3,3,3], k = 3 输出:17 解释:可以执行下述操作: 第 1 步操作:选中 i = 1 ,nums 变为 [1,4,3,3,3]。第 2 步操作:选中 i = 1 ,nums 变为 [1,2,3,3,3]。第 3 步操作:选中 i = 2 ,nums 变为 [1,1,1,3,3]。给你一个下标从 0 开始的整数数组 nums 和一个整数 k。将 nums[i] 替换为 ceil(nums[i] / 3)。将你的 分数 增加 nums[i] ,并且。

2023-10-18 11:47:37 35

原创 2023-10-17 leetcode 每日一题 倍数求和

解释:在 [1, 7] 范围内能被 3、5、7 整除的所有整数分别是 3、5、6、7。数字之和为 21。给你一个正整数 n ,请你计算在 [1,n] 范围内能被 3、5、7 整除的所有整数之和。返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。

2023-10-17 15:24:02 67

原创 2023-10-16 leetcode 每日一题 只出现一次的数字 III

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。输入:nums = [1,2,1,3,2,5]解释:[5, 3] 也是有效的答案。

2023-10-16 15:53:20 29

原创 2023-10-13 leetcode 每日一题 避免洪水泛滥

输入:rains = [1,2,3,4] 输出:[-1,-1,-1,-1] 解释:第一天后,装满水的湖泊包括 [1] 第二天后,装满水的湖泊包括 [1,2] 第三天后,装满水的湖泊包括 [1,2,3] 第四天后,装满水的湖泊包括 [1,2,3,4] 没有哪一天你可以抽干任何湖泊的水,也没有湖泊会发生洪水。rains[i] == 0 表示第 i 天没有湖泊会下雨,你可以选择 一个 湖泊并 抽干 这个湖泊的水。如果 rains[i] == 0 ,ans[i] 是你第 i 天选择抽干的湖泊。

2023-10-13 11:59:08 64

原创 2023-10-12 leetcode 每日一题 找出数组的串联值

如果 nums 中存在不止一个数字,分别选中 nums 中的第一个元素和最后一个元素,将二者串联得到的值加到 nums 的 串联值 上,然后从 nums 中删除第一个和最后一个元素。当数组是偶数时前指针能走到nums.length / 2 为最后一组,将所有串联值相加就是最终结果。如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。解释:在执行任一步操作前,nums 为 [7,52,2,4] ,串联值为 0。现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。

2023-10-12 17:57:08 38

原创 算法刷题:二叉树两题

二叉树剪枝在二叉树中增加一行

2022-08-23 15:32:44 138 1

原创 算法刷题:1260. 二维网格迁移

二维网格迁移

2022-08-01 15:59:45 69

原创 HashMap源码:构造函数部分(jdk8版本)

HashMap的构造函数

2022-07-29 10:34:01 70

原创 算法刷题:735. 行星碰撞

给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。...

2022-07-27 15:40:14 1426

原创 算法刷题:奇数值单元格的数目

leetcode 刷题 奇数值单元格的数目

2022-07-13 14:51:52 58

原创 算法刷题:边界着色

题目给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。两个网格块属于同一 连通分量 需满足下述全部条件:两个网格块颜色相同在上、下、左、右任意一个方向上相邻连通分量的边界 是指连通分量中满足下述条件之一的所有网格块:在上、下、左、右任意一个方向上与不属于同一连通分量的网格块相邻在网格的边界上(第一行/列或最后一行/列)请你使用指定颜色 color 为所有包含网格块 grid[row][

2021-12-18 19:19:28 113

原创 算法刷题:动态规划三题(1)

杨辉三角给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。暴力递归 public List<List<Integer>> generate(int numRows) { List<List<Integer>> integers = new ArrayList<List<Integer>>(); digui(numRow

2021-12-07 16:03:16 886

原创 算法刷题:链表三题(2)

1.链表相交给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。解析先获取两个链表的长度,然后移动长链表的指针次数为两个链表长度的差,最后一起移动两个链表的指针并比较是否相同,相同则返回相同的节点,到底都没有相同节点,则返回null。时间复杂度发O(n),空间复杂度O(1)。代码 public ListNode getIntersectionNode(ListNode headA, ListNode headB

2021-12-02 17:28:13 805

原创 算法刷题:树结构三题(2)

1.不同的二叉搜索树给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。解析根据入参n,获取函数f(n)为最后的结果值,树结构有一个根节点,根节点有左右两个子节点,所以根节点更换是一种,左右子节点为null或者一个节点时为一种.所以f(1)=1,f(2)=2,f(3)有两种情况,左右子节点各一个,和左右子节点一边为null,一边有两个,为了符合二叉搜索树的条件,所以f(3)=2*f(2)f(1)+f(1)=5,f(4)=

2021-11-02 09:43:37 82

原创 算法刷题:树简单三题(1)

1.相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 public boolean isSameTree(TreeNode p, TreeNode q) { //递归结束当两个节点都为null的时候 这部分相同 if (p == null && q == null) { return true; } //递归结

2021-10-27 11:28:09 67

原创 算法学习(9):二叉树的前中后序遍历

二叉树正常的遍历有三种,分别是前序,中序,后序遍历。这三种的名称是由遍历时根节点的打印顺序决定的,比如前序遍历是先打印根节点,再打印左子节点,最后再打印右子节点,依此类推中序是左-中-右,后序是左-右-中。java的二叉树类public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val

2021-10-20 10:38:47 57

原创 算法刷题:链表简单三题(1)

1.删除排序链表中的重复元素存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。 public ListNode deleteDuplicates(ListNode head) { //链表为空,或者只有一个节点时返回 if (head == null || head.next == null) { return head; }

2021-10-19 15:02:17 105

原创 算法学习(8):对堆排序的了解及其实现

堆排序是利用堆这种数据结构而设计的一种排序算法,要理解这个排序方法,先要了解堆这种数据结构,然后了解数组的堆化,最后才是利用堆来排序.堆堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。当一个二叉树满足,每一层的节点都是满的,或者最深的一层节点是从左到右插入的,这就是一颗完全二叉树.堆在完全二叉树的基础上有加了一个新要求,即子结点的键值或索引总是小于(或者大于)它的父节点。当子结点的键值或索引总是小于它的父节点时,叫小根堆,同理,当子结点的键值或

2021-09-23 10:23:34 43

原创 算法学习(7):快速排序的实现

上一篇写了并归排序,这次是快速排序.快速排序的思路,和并归排序有一点类似,也是会将数组分隔成两部分,然后递归整理每一部分,不过在分隔前要获取一个分隔值,然后将分隔值放在数组最后的位置,然后循环数组,最后保证分隔值的左边都是小于等于分隔值的,右边都是大于分隔值的,这样就分成两部分了,接下来就是在区分开的两部分里递归这一段逻辑.java代码实现 public int[] sortArray(int[] nums) { return quickSort(nums,0,nums.length-

2021-09-21 17:41:13 67

原创 算法学习(6):并归排序的时间复杂度以及实现

并归排序是使用分治的方法,对一个问题先拆分成一个个小问题,然后将小问题的答案归并整理为最后的答案,放到并归排序上就是先拆分成一个个小的数列,然后使小数列有序,在将小数列合并为一个大数列保证有序.图示这两张图里就是先将一个数组不断拆分,到最后只有一个的时候,因为一个数就是有序的,然后开始返回返回后整理,在每一层里整理数组的次数都等于这个数组的大小,所以时间复杂度是n.然后最后一层一个数就是有序的没有操作时间复杂度是1,除了最后一层之外的层数,因为是一次分成两部分,所以是logn,最后的时间复杂度就是O

2021-09-15 14:35:29 63

原创 算法学习(5):队列的特点以及实现

队列是一种逻辑数据结构,代表的是先进先出的区域.就好像一个两端都是空的管子,一端用来进,一端用来出.和我们日常排队是一样的,出的一端代表商户,你只有到商户那边才能买东西,先到的先买.用链表自己简单实现一个队列public class MyLinkQueue<E> { private Node<E> first; private Node<E> last; private Integer size = 0; public MyLink

2021-09-10 09:35:25 400

原创 算法学习(4):栈的特点以及实现

栈(stack)是一种逻辑数据结构,代表的是先进后出的区域.就比如栈是一个杯子(形状为圆形),杯口直径为10cm,然后这个数据就是略小与杯口的饼干形状与杯口相同,然后饼干放进去后每一次只能那一块,这个时候就只能拿到最上面也就是最后放进去的那块.用链表自己实现一个栈public class MyStack<E> { private Node<E> node; public MyStack() { } public E push(E ite

2021-09-09 11:10:23 156

原创 算法学习(3): 链表结构的介绍和相关简单算法题

111

2021-09-03 10:18:07 47

原创 算法学习(2):位运算|、^、&的介绍和使用

|、^、&、~的介绍| 是按位或运算符号,&是按位与运算符,^是按位异或运算符,~是按位取反运算符.| 指的是参加运算的两个对象,按二进制位进行"或"运算.0|0=0 0|1=1 1|1=1 1|0=1结论是 按二进制位进行"或"运算,都为0时的运算结果等于0,其他情况都为1.& 指的是参加运算的两个对象,按二进制位进行"与"运算.0&0=0 0&1=0 1&1=1 1&0=0结论是 按二进制位进行"与"运算,都为1时的运算结果等于1,其他情况都为0

2021-08-30 15:06:37 2939

原创 算法学习:排序算法的时间复杂度(1)

算法学习:排序算法的时间复杂度(1)​ 程序等于数据结构加算法。这一著名的公式概括了程序的本质。​ 因为自己不是计算机专业毕业,为了提升自己的技术能力,从而开始学习算法。冒泡排序,及时间复杂度的计算for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]>arr[j+1]){ int tem=arr[

2021-08-17 08:56:23 83

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除