自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Mysql】高频SQL基础题(一)

只记录需要康复训练的题目。

2023-09-27 18:23:33 439

原创 【Mysql】EXPLAIN

Explain的使用

2022-11-12 22:11:29 650

原创 Spring相关——IOC、Bean、注解

bean

2022-09-26 21:57:19 540

原创 Eureka和Nacos的对比

Nacos和Eureka

2022-09-24 22:51:55 480

原创 从输入URL到跳转,中间经历了哪些过程?

HTTP

2022-09-17 02:20:13 1049

原创 labuladong算法——回溯框架

labuladong的回溯剪枝算法合集

2022-09-15 12:34:36 1225

原创 labuladong刷题——第二章(2)子序列类型问题

动态规划设计:最长递增子序列

2022-09-13 17:21:45 206

原创 labuladong刷题——第二章(1) 动态规划解题套路框架

动态规划

2022-09-13 15:56:26 354

原创 labuladong刷题——第一章(2) 反转单链表 (递归)

反转单链表 (递归)

2022-09-13 14:05:41 459

原创 labuladong刷题——第一章(1) 双指针技巧秒杀七道链表题目

双指针技巧秒杀七道链表题目

2022-09-13 12:34:55 431

原创 解决Swagger2中“message“: “Failed to convert value of type ‘java.lang.String’ to required type ‘java.lan

RESTFUL风格的,必须不能只有一个{id},必须要加上前缀abc/{id}

2022-08-28 19:42:50 389

原创 nacos 优先级问题

比如建立在service.yml的自动加载的同名配置文件,优先级是最高的,也就是说如果出现冲突的配置以他为准,然后才是扩展配置,然后是通用配置.Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。实际上可以这么理解:先加载通用配置,再加载扩展配置(ext-config),最后再加载自己的配置....

2022-08-28 00:46:17 655

原创 JUC-CAS的底层原理与ABA问题的解决

CAS的英文为Compare and Swap 翻译为比较并交换。CAS加volatile关键字是实现并发包的基石。没有CAS就不会有并发包,synchronized是一种独占锁、悲观锁,java.util.concurrent中借助了CAS指令实现了一种区别于synchronized的一种乐观锁。使用方法:AtomicInteger a = new AtomicInteger(1);a.getAndIncrement();我们进入getAndIncrement方法: public fi

2022-03-25 01:26:28 249

原创 JZ26 树的子结构

思路还是很简单的:写个递归。先写检查以root1和root2为根结点的两棵树是否一致的方法: public boolean function(TreeNode root1,TreeNode root2){ if(root2==null) return true;//root2已经结束了 if(root1==null) return false; //root1结束但是root2没有结束 if(r.

2022-02-13 19:28:19 243

原创 JZ12 矩阵中的路径

这道题的思路很简单,主要是如何设计递归。我们看到他是从矩形中的一个点开始往他的上下左右四个方向查找,这个点可以是矩形中的任何一个点,所以代码的大致轮廓我们应该能写出来,就是遍历矩形所有的点,然后从这个点开始往他的4个方向走,因为是二维数组,所以有两个for循环,代码如下: public boolean hasPath (char[][] matrix, String word) { char[] words = word.toCharArray(); for (i.

2022-02-13 01:26:04 450

原创 JZ7 重建二叉树

import java.util.*;/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode reConstructBinaryTree(in.

2022-02-12 03:21:20 111

原创 剑指 Offer II 069. 山峰数组的顶部

class Solution { public int peakIndexInMountainArray(int[] arr) { //二分查找试试,修改边界的条件要变动一下 int l = 1; int r = arr.length-2; while(l<=r){ int mid = (r+l)/2; if(arr[mid]>arr[mid-1]) l=mid+1; .

2022-02-10 02:25:07 297

原创 剑指 Offer II 068. 查找插入位置

复健~典型二分查找,详细注释见代码class Solution { public int searchInsert(int[] nums, int target) { int i = 0; int j = nums.length-1; while(i<=j){ int mid = i+(j-i)/2; //每次都造一个新的mid出来 if(nums[mid] == ta.

2022-02-10 01:37:32 215

原创 剑指 Offer II 062. 实现前缀树

手动实现前缀树class Trie { private Trie[] children; boolean isEnd; /** Initialize your data structure here. */ public Trie() { children = new Trie[26]; isEnd = false; //children是一个26长度的数组 //如果有后续,就把新的结点放到数组里。 .

2022-01-18 00:00:31 279

原创 剑指 Offer II 061. 和最小的 k 个数对

利用一个大根堆,每次将一个list加入大根堆中,大根堆的size超过k时删除堆顶的元素。主要是讲究大根堆的比较器。class Solution { public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) { PriorityQueue<List<Integer>> heap = new PriorityQueue<>( .

2022-01-14 22:46:02 149

原创 剑指 Offer II 059. 数据流的第 K 大数值——优先队列

PriorityQueue类在Java1.5中引入。PriorityQueue是基于优先堆的一个无界队列,这个优先队列中的元素可以默认自然排序或者通过提供的Comparator(比较器)在队列实例化的时排序。要求使用Java Comparable和Comparator接口给对象排序,并且在排序时会按照优先级处理其中的元素。比如我们往队列里面插入132,插入2的时候,就会在内部调整为123(默认顺序是升序)。正是由于这个优良特性可以帮助我们实现一系列问题。我们先看一个例子,体会一下他的优点,然后再看一下为.

2022-01-13 20:32:48 320

原创 剑指 Offer II 055. 二叉搜索树迭代器

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) {..

2022-01-08 14:36:40 191

原创 剑指 Offer II 054. 所有大于等于节点的值之和

太简单了以至于不知道应该写什么。class Solution { //以右中左的形式遍历……? private int tmp; public TreeNode convertBST(TreeNode root) { tmp = 0; order(root); return root; } public void order(TreeNode root){ if(root==null) retur..

2022-01-04 22:14:06 165

原创 剑指 Offer II 053. 二叉搜索树中的中序后继

也可以存放,我用标记做的。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { private TreeNode res; private int flag = .

2022-01-04 22:06:30 159

原创 剑指 Offer II 052. 展平二叉搜索树

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { .

2022-01-04 21:56:34 181

原创 剑指 Offer II 051. 节点之和最大的路径

思路如下:一个递归,每个节点需要左右子树返回各自的最大贡献值,注意这个最大贡献值是左右子树各自的根结点+该子树的左右子树中更大的那一个没理解?行吧,比如上图的例子,我们假设1这个节点要进入递归,那么1节点返回的值,就是1+3=4,而不是1+2=3。但是注意,返回的最大贡献值和题目所求的最大值没关系,题目所求的最大值应当有一个全局变量,在每次递归中,访问的根结点与左右子树各自最大贡献值之和才是最大值。还是不懂?好吧如图所示,对于-10而言,它能得到的最大值就是左子树的最大贡献值9+右子树的最大贡献.

2022-01-04 21:05:04 173

原创 剑指 Offer II 050. 向下的路径节点之和

这道题是一个将前缀和应用到树结构中的例子,制作一个递归函数,每次递归将一个结点加入到前缀和的hashmap中,计算map中存在几个符合题目要求的点,将这些点计入总数,之后继续向下递归。每个节点计算完毕后,退出递归时要记得将该节点的map更新。class Solution { public int pathSum(TreeNode root, int targetSum) { HashMap<Integer,Integer> map = new HashMap<.

2022-01-04 20:29:58 184

原创 剑指 Offer II 047. 二叉树剪枝

可以用递归做,在递归的过程中,下面的枝已经被剪掉了,上面的就可以通过是否为null来判定,return一个true或者false。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val =..

2021-12-21 13:40:04 334

原创 剑指 Offer II 044. 二叉树每层的最大值

总的来说没什么难度,就是一个队列遍历树的方法:插入一个循环,每层都计算队列的size来确定循环次数,每次循环就是一层。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; }.

2021-12-21 10:50:27 321

原创 剑指 Offer II 044. 二叉树每层的最大值

加一个for循环,每层读取队列的size并且循环size的次数。class Solution { public List<Integer> largestValues(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); Queue<TreeNode> q = new LinkedList<>(); TreeNode .

2021-12-21 09:47:42 85

原创 剑指 Offer II 040. 矩阵中最大的矩形

思路是单调栈:从第一行开始扫描,将每一行都认为是一个单调栈求最大直方图面积。比如第二行就是 2 0 2 1 1 第三行是 3 1 3 2 2class Solution { public int maximalRectangle(String[] matrix) { if(matrix.length==0) return 0; int max = 0; int r[] = new int[matrix[0].length()]; .

2021-12-20 22:53:56 136

原创 剑指 Offer II 043. 往完全二叉树添加节点

想到了就很简单:按照层序队列对其进行编号,左孩子是2倍,右孩子是2倍+1,所以需要维护一个hashmap,<Node,Integer>类型,存放结点和编号,每次新节点加入则为其分配一个序号,将其直接插入到相应位置下即可。class CBTInserter { TreeNode root; Map<Integer, TreeNode> map; public CBTInserter(TreeNode root) { this.root .

2021-12-20 22:52:42 75

原创 【无标题】

最关键的就是想明白了这是个什么单调栈!这是个递增单调栈,注意注意!往上会变大!递增单调栈找左右两侧小的数据!比如 5 2 3 1 7 65 入栈2 入栈 此时5必须出栈 左侧为0 右侧为2 说明左右边界是 0-23入栈1入栈 3出栈 左侧为2 入栈为1 说明是2-11入栈 2出栈 左侧为0 右侧为1 说明是0-17入栈6入栈 7 出栈 说明其左侧为 1 右侧为 6class Solution { public int largestRectangleArea(int[] h..

2021-12-17 14:59:57 90

原创 剑指 Offer II 037. 小行星碰撞

栈。class Solution { public int[] asteroidCollision(int[] asteroids) { Deque<Integer> st = new ArrayDeque<>(); for(int asteroid : asteroids){ /*几个条件只要满足一个就不会发生碰撞,可把当前行星压入栈: 1.栈为空,不管当前行星是正是负(往左还是往右)都要压.

2021-12-17 13:58:06 207

原创 剑指 Offer II 033. 变位词组

这个题很有意思,难度不大,但是思路有趣,代码的语法糖很多,注意一下。首先,创建一个hashmap,map中存放String:list-String,其含义为:经过排序的String:未经过排序的Stringlist。对于每个String,先将其排序,得到的新String进行contains,若存在在map中,则取出map中的list,将原始String添加进list中,若不存在在map中,则直接创建新的list并将其添加进map中,注意这里用排序后的String当成key,最终直接取出所有键值,并将..

2021-12-15 10:54:12 1647

原创 剑指 Offer II 032. 有效的变位词

简单题我重拳出击,一个26位的数组记录下标即可,第一个字符串+1第二个字符串-1,数组为0即可确认。在这里插入代码片class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length() || s.equals(t)) { return false; } int[] table = new int[26]; .

2021-12-15 10:27:32 493

原创 剑指 Offer II 031. 最近最少使用缓存

很简单:用一个hashmap存放key-Node。Node是一个双向链表的结点。每次添加新数据/访问数据,都要将Node放到双向链表的最后一位。添加新数据时超出下标,就将链表的第一位删去,同时更新map中的信息。class LRUCache { Node last; Node head; int capacity; HashMap<Integer,Node> map; class Node{ Node next; .

2021-12-15 10:24:04 771

原创 剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器

这道题的要求是O(1)插入和删除元素,hashmap可以达到O(1),随机访问元素,list可以达到O(1)。所以维护一个hashmap和list,hashmap中存放元素-listindex的数据,list中存放真实的数据。插入元素,将元素加入最后一位,同时将信息加入map中。删除元素,将最后一位的元素与要删除的元素替换,并且同时更新map中的信息,这样list在下次插入的时候还会插入到最后一个。随机访问元素 直接随机数访问数组即可。class RandomizedSet { pri.

2021-12-14 15:44:44 1045

原创 剑指 Offer II 028. 展平多级双向链表

本质DFS,先找child后找next。所以先next进栈,再child进栈。别忘了将child指针清空。/*// Definition for a Node.class Node { public int val; public Node prev; public Node next; public Node child;};*/class Solution { public Node flatten(Node head) { ...

2021-12-14 10:38:17 84

原创 剑指 Offer II 026. 重排链表

思路:找栈的中心位置,然后将后半部分全部送入栈中,然后一前一后挨个对接即可。class Solution { public void reorderList(ListNode head) { ListNode _head = head; Deque<ListNode> stack = new ArrayDeque<>(); int len = 0; while(_head != null){ .

2021-12-14 00:42:32 1139

空空如也

空空如也

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

TA关注的人

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