自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 239. 滑动窗口最大值

public static int[] maxSlidingWindow(int[] nums, int k) { if (nums == null || k <= 0 || k > nums.length) { return new int[0]; } int length = nums.length; int[] res = new int[length - k + 1]; Dequ.

2020-08-24 23:40:46 113

原创 剑指 Offer 38. 字符串的排列

public static String[] permutation(String s) { if (s == null) { return new String[0]; } char[] chars = s.toCharArray(); Set<String> res = new HashSet<>(); baolidigui(chars, 0, res); S.

2020-08-06 23:12:20 139

原创 字符串所有子序列

/** * 递归过程是一颗决策树,对每个字符要或者不要 * * @param s * @return */ public static List<String> recursionStr(String s) { if (s == null) { return Collections.emptyList(); } char[] chars = s.toCharArra.

2020-08-06 22:07:52 824

原创 练习:字符串所有子串的收集

private static List<String> zichuan(String s) { if (s == null) { return Collections.emptyList(); } List<String> res = new ArrayList<>(); char[] chars = s.toCharArray(); int length = cha.

2020-08-05 11:39:06 120

原创 拓扑排序算法

/** * 拓扑排序算法,拓扑都是有向无环图 * 使用场景:编译的时候,比如,springboot启动的时候要读取docker系统环境变量,还要读取各配置文件按照顺序 * 还有比如,a的包依赖b包,a,b包各有自己的配置文件,按照依赖顺序依次读取,所以不要循环依赖 * 拓扑排序就是从最底层开始编译,往上编译,才能编译成功 * 算法过程:依次找入度为0的点,依次删掉 */ public static List<Node> sor.

2020-08-02 00:56:07 359

原创 图的遍历算法

/** * 从某个节点开始宽度优先遍历,也叫广度优先遍历 * * @param node */ public static void bfs(Node node) { if (node == null) { return; } Deque<Node> queue = new LinkedList<>(); Set<Node> set =.

2020-08-02 00:30:47 148

原创 图的通用数据结构

public class Graph { /** * 图的标号对应的节点对象 */ public Map<Integer, Node> nodes; /** * 边的集合 */ public Set<Edge> edges; public Graph() { this.nodes = new HashMap<>(); this.edges = new Ha.

2020-08-01 23:43:47 102

原创 并查集

public class UnionSet<V> { public static class Node<V>{ V value; public Node(V value) { this.value = value; } } public Map<V, Node<V>> nodes; public Map<Node<V>, Node.

2020-07-30 00:57:08 87

原创 114. 二叉树展开为链表

114. 二叉树展开为链表难度中等429收藏分享切换为英文关注反馈给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6public void flatten(TreeNode root) { if (root.

2020-07-29 11:19:14 85

原创 104. 二叉树的最大深度

104. 二叉树的最大深度难度简单616收藏分享切换为英文关注反馈给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。/** * 104. 二叉树的最大深度 * https://leetcode-cn.co...

2020-07-28 00:15:14 74

原创 110. 平衡二叉树

110. 平衡二叉树难度简单380收藏分享切换为英文关注反馈给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,null,4,4] 1 ...

2020-07-25 00:16:30 79

原创 面试题 04.06. 后继者

面试题 04.06. 后继者难度中等23收藏分享切换为英文关注反馈设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 1 2 / \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \ 3 6 / \ 2 4

2020-07-24 00:18:44 120

原创 590. N叉树的后序遍历

给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个3叉树:返回其后序遍历:[5,6,3,2,4,1]./** * 590. N叉树的后序遍历 * https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/ * * @param root * @return */ public List<Integer> pos...

2020-07-24 00:07:44 120

原创 剑指 Offer 32 - I. 从上到下打印二叉树

剑指 Offer 32 - I. 从上到下打印二叉树难度中等28收藏分享切换为英文关注反馈从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]/** * https://leetcode-cn.com/problems/cong-shang-dao-xia-...

2020-07-23 00:43:18 78

原创 429. N叉树的层序遍历

429. N叉树的层序遍历难度中等98收藏分享切换为英文关注反馈给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过1000。 树的节点总数不会超过5000。递归解法:/** * 429. N叉树的层序遍历 * https://leetcode-cn.com...

2020-07-22 08:43:59 166

原创 102. 二叉树的层序遍历

102. 二叉树的层序遍历难度中等567收藏分享切换为英文关注反馈给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]递归方法:/** * 102. 二叉树的层序遍历 * http...

2020-07-22 08:31:16 94

原创 145. 二叉树的后序遍历

public List<Integer> postorderTraversal1(TreeNode root) { if (root == null) { return Collections.emptyList(); } List<Integer> res = new ArrayList<>(); add(root, res); return res; }.

2020-07-21 00:33:48 80

原创 142. 环形链表 II

142. 环形链表 II难度中等546收藏分享切换为英文关注反馈给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连...

2020-07-20 21:47:54 103

原创 141. 环形链表

141. 环形链表难度简单679收藏分享切换为英文关注反馈给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其...

2020-07-20 21:42:48 91

原创 160. 相交链表

/** * 160. 相交链表 * https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ * * @param headA * @param headB * @return */ public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ...

2020-07-20 00:42:02 77

原创 138. 复制带随机指针的链表

后面的刷题中记得复用指针,节省空间/** * https://leetcode-cn.com/problems/copy-list-with-random-pointer/ * 138. 复制带随机指针的链表 * * @param head * @return */ public static Node copyRandomList(Node head) { Map<Node, Node>...

2020-07-19 00:34:55 68

原创 138. 复制带随机指针的链表

/** * https://leetcode-cn.com/problems/copy-list-with-random-pointer/ * 138. 复制带随机指针的链表 * * @param head * @return */ public static Node copyRandomList(Node head) { Map<Node, Node> map = new HashMap&...

2020-07-19 00:32:20 82

原创 86. 分隔链表

/** * https://leetcode-cn.com/problems/partition-list/ * 86. 分隔链表 * 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 * <p> * 你应当保留两个分区中每个节点的初始相对位置。 * <p> * 示例: * <p> * 输入: head = 1->4-&g.

2020-07-19 00:03:45 101

原创 92. 反转链表 II

92. 反转链表 II难度中等425收藏分享切换为英文关注反馈反转从位置m到n的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULLpublic static ListNode reverseBetween(ListNode head, int m, int n...

2020-07-17 23:45:56 102

原创 206. 反转链表

206. 反转链表难度简单1096收藏分享切换为英文关注反馈反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?public ListNode reverseList(ListNode head) { ListNode pre = null; ListNod.

2020-07-17 22:31:19 70

原创 234. 回文链表

234. 回文链表难度简单563收藏分享切换为英文关注反馈请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解法一:空间O(N),时间O(N)/** * 判断栈是否是回文结构 * * @param head * @return */..

2020-07-17 00:32:43 99

原创 876. 链表的中间结点

给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.ne...

2020-07-16 23:46:01 583

原创 剑指 Offer 25. 合并两个排序的链表

剑指 Offer 25. 合并两个排序的链表难度简单36收藏分享切换为英文关注反馈输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000class Solution { public ListNode mergeTwoLists(ListNode l1,.

2020-07-16 22:46:55 93

原创 剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点难度简单56收藏分享切换为英文关注反馈输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.public ListNode...

2020-07-15 22:55:52 81

原创 剑指 Offer 18. 删除链表的节点

https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/剑指 Offer 18. 删除链表的节点难度简单29收藏分享切换为英文关注反馈给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么...

2020-07-15 22:46:02 127

原创 剑指 Offer 06. 从尾到头打印链表

剑指 Offer 06. 从尾到头打印链表难度简单38收藏分享切换为英文关注反馈输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000解答:public static int[] reversePrint(ListNode head) { if (head == null) { re...

2020-07-13 23:17:52 98

原创 算法学习三:归并排序,随机快排

1.归并递归实现非递归实现:

2020-07-03 00:13:49 106

原创 算法学习二:链表结构、栈、队列、递归行为、哈希表和有序表

1.链表:

2020-06-26 11:28:12 162

原创 算法学习一:复杂度、对数器、二分法与异或运算

1.在数据结构上玩流程,程序=数据结构+算法2.评估算法指标:时间复杂度,额外空间复杂度,常数项时间复杂度3.选择排序:从0到n-1位置找到最小值,跟0位置的数交换,从1到N-1位置上的再找到最小值,跟1位置交换,继续循环。。。4.冒泡排序:从0开始一直循环到N-1位置,从0开始,一个一个比较,比较0和1位置上谁大,大的交换到后面,遍历一次之后,最大的数,被放到了n-1位置上,继续从0开始遍历,第二次遍历到n-2位置上。5.冒泡排序和选择排序,性能不受数据的初始顺序影响,该做什么还是

2020-06-23 00:29:17 214

原创 es一:核心概念和原理

1.学习方法:看官方文档,更新速度快,不要在书上花太多时间2.倒排索引:基于document,分词,把词拆开,统计,出现频次,相关度越高,说明结果越精准分词以后,统计各分词在document出现的id,这就是倒排索引,然后根据搜索关键词,把关键词分词,再去匹配分词,匹配到之后将各分词内的id集合,去统计原词汇出现的相关度...

2020-06-21 18:47:31 299

原创 高并发一:synchronized

1.线程:一个程序(动态称作进程)不同的执行路径2.创建线程的两种方式:实现thread类,实现runable接口,3.线程方法:sleep休眠一定时间后自动复活;yield当前线程调用时,先退出一下,进入一个等待队列,让出一下cpu,工程中很少遇到;join,t1线程调用另一个线程t2的join方法,将t2加入t1的执行过程,t2执行完成后才继续运行t1;stop方法不要用;inter4.java线程状态:六个状态:new,还未调用start方法;runable,调用了start,就绪状态,扔

2020-06-20 20:54:02 137

原创 1架构概括

1.顶层设计:按需,预期未来,规划企业架构业务全局出发,制定可落地的架构方案技术选型,难题解决规划方案与代码,广度与深度技术+管理2.关键词:分布式,高并发,高性能,高可用,高扩展,松耦合,高内聚,可复用,边界,安全,成本,规模等往下:服务,缓存,消息,搜索,调度,任务,数据,监控,配置,网关等等具体理论:paxos,cap,base,acid,raft,rpc,reactor,sla,slb等3.调优技术关键词:缓冲(buffer):解决速度不匹配的问题,从应用层访

2020-06-14 16:45:31 261

原创 spring源码学习

1.BeanDefinitionRegistry是保存bean定义信息的接口2.实例化BeanFactoryPostProcessor,3.初始化工厂4.循环调用BeanFactoryPostProcessor.postProcessBeanFactory5.实例化BeanPostProcessor6.实例化单例bean

2020-06-14 12:42:20 106

原创 spring核心接口ApplicationContext以及核心方法

1.核心方法org.springframework.context.support.AbstractApplicationContext#refresh2.具体:org.springframework.context.support.AbstractApplicationContext#prepareRefreshgetEnvironment().validateRequiredProperties();getEnvironment()最终创建一个StandardEnvironmen.

2020-06-06 23:56:43 176

原创 spring源码之feingclient示例

1.先用扫描工具扫描配置的包路径,获取到@FeignClient的类2.反射获取地址,路径,参数信息,3.通过FactoryBean提供实例化对象4.源码实现:class FeignClientsRegistrarpublic void registerFeignClients(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { ClassPathScanningCandidateComponen

2020-05-30 18:39:27 187

空空如也

空空如也

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

TA关注的人

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