- 博客(74)
- 收藏
- 关注
原创 SpringBoot构建电商基础秒杀项目
慕课网——SpringBoot构建电商基础秒杀项目第一章 课程介绍第二章 应用SpringBoot完成基础项目搭建2.1 使用IDEA创建maven项目2.2 引入SpringBoot依赖包实现简单的Web项目2.3 Mybatis接入SpringBoot项目2.4 Mybatis自动生成器的使用方式第三章 用户模块开发3.1 使用SpringMVC方式开发用户信息3.2 定义通用的返回对象——返回正确信息3.3 定义通用的返回对象——返回错误信息3.4 定义通用的返回对象——异常处理
2020-06-16 13:27:08
526
原创 synchronized 与 ReentrantLock 的比较与使用
文章目录前置知识synchronized 与 ReentrantLock 比较使用选择ReentrantLock和synchronized使用分析参考资料前置知识源码层次深入理解 ReentrantLocksynchronized 与 ReentrantLock 比较1. 锁的实现synchronized 是 JVM 实现的,而 ReentrantLock 是 JDK 实现的。2. 性能新版本 Java 对 synchronized 进行了很多优化,例如自旋锁等,synchronized 与
2020-06-13 15:23:13
341
原创 Leetcode_#503_下一个更大元素Ⅱ
原题:#503_下一个更大元素Ⅱ使用栈保存尚未发现下一个更大元素的下标使用模运算实现循环,实际上只需遍历一圈,所以将数组虚拟加大一倍使用next数组保存下标对应的下一个更大元素遍历数组,使数组的元素与栈顶的元素相比若栈顶的元素小于当前元素,则弹出栈顶元素(是数组下标),并保存当前元素的值到next数组中public int[] nextGreaterElements(in...
2020-05-07 08:50:17
351
原创 Leetcode_#739_每日温度
原题:#739_每日温度题目翻译:求出数组中元素与下一个比它大的元素之间的距离思路:使用栈存放数组下标遍历数组中的元素并把它放入栈中放入栈前,如果栈不为空,比较当前节点的值与栈中下标对应数组中的值,如果当前的值较大,则说明当前元素为栈顶元素的下一个比它大的值,计算两者下标距离如果当前值不比栈顶的值大,则把当前值的下标入栈public int[] dailyTemp...
2020-05-07 08:48:40
183
原创 Leetcode_#20_有效的括号
原题:#20_有效的括号public boolean isValid (String s) { Stack<Character> stack = new Stack<>(); for (String c : s.toCharArray()) { if (c == '(' || c == '{' || c == '[') { ...
2020-05-07 08:47:54
184
原创 Leetcode_#155_最小栈
原题:#155_最小栈使用两个栈:一个是数据栈,全部数都可以进入一个是最小值栈,每输入一个数时,就与当前的最小值比较若大于当前最小值,则再放入一个当前最小值到最小值栈出栈时,数据栈与最小值栈同步出栈为什么要重复放入最小值?最小值栈可以理解为当前时刻数据栈对应的最小值class MinStack { private Stack<Integer&...
2020-05-07 08:46:55
185
原创 Leetcode_#255_用队列实现栈
原题:#255_用队列实现栈队列入队时会在对尾。让每一次入队的元素都在队首即可做到后进先出每一次入队时,都把队列原有的元素出队,并再次入队class MyStack { private Queue<Integer> queue; public MyStack() { queue = new LinkedList<>();...
2020-05-07 08:45:15
156
原创 Leetcode_#232_用栈实现队列
原题:#232_用栈实现队列栈:先进后出队列:先进先出使用两个栈A,B。进栈时进入A,出栈时先从A出,进入B,再从B出。这时就可以实现先进先出了class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack<Integer> out = new St...
2020-05-07 08:44:21
145
原创 Leetcode_#501_二叉搜索树中的众数
原题:#501_二叉搜索树中的众数二叉搜索树是一个非递减序列,所以只需要比较当前节点与前一节点pre的值即可如果pre不存在,则当前节点为第一个节点,直接将该值放入数组,计数为1如果pre存在如果pre的值等于当前的值,则计数加1如果pre的值不等于当前值,计数置为1计数与已有最值比较如果当前计数大于已有最值,则更新最值,清空数组,添加当前节点的值如果当前计数等于已有...
2020-05-06 15:55:35
163
原创 Leetcode_#530_二叉搜索树的最小绝对值差
原题:#530_二叉搜索树的最小绝对值差思路:二叉搜索树的中序遍历是有序的只需要比较相邻两个节点的值即可private TreeNode preNode = null;private int minDiff = Integer.MAX_VALUE;public int f (TreeNode root) { helper(root); return min...
2020-05-06 15:52:45
257
原创 Leetcode_#653_两数之和Ⅳ-输入BST
原题:#653_两数之和Ⅳ-输入BST解法一:每遍历一个值,都将之与HashSet中的值进行比较若符合x+y=k,则返回true若不符合,则将之存入hashset中,然后去它的左子树和右子树中找public boolean findTarget(TreeNode root, int k) { Set<Integer> set = new HashSet(...
2020-05-06 15:51:11
129
原创 Leetcode_#108_将有序数组转换成二叉搜索树
原题:#108_将有序数组转换成二叉搜索树解题思路根据树的前序遍历+中序遍历可确定一棵树利用二分递归查找数组可得到所有子树的根节点根据树的中序遍历+后序遍历可确定一棵树public TreeNode f (int[] nums) { return helper(nums, 0, nums.length);}public TreeNode helper(in...
2020-05-06 15:49:02
109
原创 Leetcode_#235_二叉搜索树的最近公共祖先
原题:#235_二叉搜索树的最近公共祖先思路如果当前节点的值均大于p,q节点的值,那么p,q节点的最近祖先一定在当前节点的左子树当中。反之则在右子树当中若大于其中一个值,小于另一个值,那么这个点就是p,q最近公共祖先递归public TreeNode LCA(TreeNode root, TreeNode p, TreeNode q) { if (root.val ...
2020-05-06 15:47:04
110
原创 Leetcode_#538_把二叉搜索树转换为累加树
原题:#538_把二叉搜索树转换为累加树关键:二叉搜索树的中序遍历是有序的最大的数更新后还是它本身按照节点值降序遍历所有节点,同时记录我们已经遍历过的节点值的和,并把这个和加到当前节点的值中遍历一个没有遍历过的节点之前,先将大于点值的点都遍历一遍private int sum;public TreeNode convertBST(TreeNode root) { ...
2020-05-06 15:45:01
106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人