随笔 - 545
文章 - 0
评论 - 31
阅读 -
72万
03 2019 档案
无序数组的中位数
摘要:描述 比如:{1,3,2,5,4} 中位数为3 {1,3,2,5,4,6}中位数为3.5 解析 排序 当然 排序啊。快排。 最小堆 首先将数组的前(n+1)/2个元素建立一个最小堆。 然后,对于下一个元素,和堆顶的元素比较,如果小于等于,丢弃之,接着看下一个元素。如果大于,则用该元素取代堆顶,再调整
阅读全文
[LeetCode] 113. Path Sum II ☆☆☆(二叉树所有路径和等于给定的数)
摘要:LeetCode 二叉树路径问题 Path SUM(①②③)总结 Path Sum II leetcode java 描述 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals
阅读全文
[LeetCode] 112. Path Sum ☆(二叉树是否有一条路径的sum等于给定的数)
摘要:Path Sum leetcode java 描述 Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the pa
阅读全文
[LeetCode] 110. Balanced Binary Tree ☆(二叉树是否平衡)
摘要:Balanced Binary Tree 【数据结构和算法】全面剖析树的各类遍历方法 描述 解析 递归分别判断每个节点的左右子树 该题是Easy的原因是该题可以很容易的想到时间复杂度为O(n^2)的方法。即按照定义,判断根节点左右子树的高度是不是相差1,递归判断左右子树是不是平衡的。 根据深度判断左
阅读全文
[LeetCode] 111. Minimum Depth of Binary Tree ☆(二叉树的最小深度)
摘要:[Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度 (最小有3种解法) 描述 解析 递归深度优先搜索 当求最大深度时,我们只要在左右子树中取较大的就行了。 然而最小深度时,如果左右子树中有一个为空会返回0,这时我们是不能算做有
阅读全文
[LeetCode] 104. Maximum Depth of Binary Tree ☆(二叉树的最大深度)
摘要:描述 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthes
阅读全文
[LeetCode] 99. Recover Binary Search Tree(复原BST) ☆☆☆☆☆
摘要:Recover Binary Search Tree leetcode java https://leetcode.com/problems/recover-binary-search-tree/discuss/32535/No-Fancy-Algorithm-just-Simple-and-Pow
阅读全文
[LeetCode] 98. Validate Binary Search Tree(是否是二叉搜索树) ☆☆☆
摘要:描述 解析 二叉搜索树,其实就是节点n的左孩子所在的树,每个节点都小于节点n。 节点n的右孩子所在的树,每个节点都大于节点n。 定义子树的最大最小值 比如:左孩子要小于父节点;左孩子n的右孩子要大于n的父节点。以此类推。 中序遍历 中序遍历时,输出的值,和前一个值比较,如果大,就失败。 代码 当然还
阅读全文
[LeetCode] 95. Unique Binary Search Trees II(给定一个数字n,返回所有二叉搜索树) ☆☆☆
摘要:Unique Binary Search Trees II leetcode java 【LeetCode】Unique Binary Search Trees II 异构二叉查找树II Unique Binary Search Trees II -- LeetCode 描述 Given n, ge
阅读全文
[LeetCode] 96. Unique Binary Search Trees(给定一个数字n,有多少个唯一二叉搜索树) ☆☆☆
摘要:[Leetcode] Unique binary search trees 唯一二叉搜索树 Unique Binary Search Trees leetcode java 描述 Given n, how many structurally unique BST's (binary search t
阅读全文
[LeetCode] 94. Binary Tree Inorder Traversal(二叉树的中序遍历) ☆☆☆
摘要:二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) 描述 解析 递归方案 很简单,先左孩子,输出根,再右孩子。 非递归方案 因为访问左孩子后要访问右孩子,所以需要栈这样的数据结构。 1.指针指向根,根入栈,指针指向左孩子。把左孩子当作子树的根,继续前面的操作。 2.如果某个节点的左孩子不存
阅读全文
[LeetCode] 100. Same Tree ☆(两个二叉树是否相同)
摘要:描述 解析 根与根比较,左右子树互相递归比较即可。 代码
阅读全文
JDK8的ConcurrentHashMap也会造成CPU 100%
摘要:转载:不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~ 现象 大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU 1
阅读全文
spring多个AOP执行先后顺序(面试问题:怎么控制多个aop的执行循序)
摘要:转载:spring多个AOP执行先后顺序(面试问题:怎么控制多个aop的执行循序) 众所周知,spring声明式事务是基于AOP实现的,那么,如果我们在同一个方法自定义多个AOP,我们如何指定他们的执行顺序呢?网上很多答案都是指定order,order越小越是最先执行,这种也不能算是错,但有些片面。
阅读全文
堆排序
摘要:原理 堆其实就是一种特殊的完全二叉树,分为大顶堆和小顶堆。 大顶堆就是指父节点 >= 左右孩子结点, 而左右孩子结点之间的大小关系随意。小顶堆反之。 堆排序基本思路 就是先把序列构建成大顶堆序(升序用大顶堆) 然后大顶堆的根节点和最后一个结点交换位置,将最大元素沉到数组末端 这样一来每交换一次就得到
阅读全文
归并排序
摘要:http://www.cnblogs.com/jingmoxukong/p/4308823.html (代码) http://blog.csdn.net/middlekingt/article/details/8446552 原理 将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若
阅读全文
快速排序
摘要:快速排序进阶之三路快排——学习笔记 原理 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 使用了分冶法。 分冶法是把一个规模为N的问题分成两个或多
阅读全文
冒泡排序
摘要:原理 比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序
阅读全文
排序算法复杂度
摘要:内排序 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:直接选择排序、堆排序。
阅读全文
[LeetCode] 20. Valid Parentheses ☆(括号匹配问题)
摘要:转载:https://leetcode.windliang.cc/leetCode-20-Valid%20Parentheses.html 描述 Given a string containing just the characters '(', ')', '{', '}', '[' and ']'
阅读全文
[LeetCode] 23. Merge k Sorted Lists ☆☆☆☆☆
摘要:转载:https://leetcode.windliang.cc/leetCode-23-Merge-k-Sorted-Lists.html 描述 Merge k sorted linked lists and return it as one sorted list. Analyze and de
阅读全文
RockerMQ消息消费、重试
摘要:消息中间件—RocketMQ消息消费(一) 消息中间件—RocketMQ消息消费(二)(push模式实现) 消息中间件—RocketMQ消息消费(三)(消息消费重试) MQ中Pull和Push的两种消费方式 Push方式 由消息中间件(MQ消息服务器代理)主动地将消息推送给消费者;采用Push方式,
阅读全文
RocketMQ消息存储
摘要:转载:RocketMQ源码学习--消息存储篇 消息中间件—RocketMQ消息存储(一) RocketMQ高性能之底层存储设计 存储架构 RMQ存储架构 上图即为RocketMQ的消息存储整体架构,RocketMQ采用的是混合型的存储结构,即为Broker单个实例下所有的队列共用一个日志数据文件(即
阅读全文
[LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)
摘要:字符串乘法 转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的。也就是传说中的大数相乘。 解法一 我们就模仿我们在纸上做乘法的过程写出一个算法。 个位乘个位,得出一个数,然后个位乘十位,全部乘完以后,就再用十位乘以各个
阅读全文
一份超详细的 Java 问题排查工具单
摘要:转载:一份超详细的 Java 问题排查工具单
阅读全文
二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
摘要:转载:二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) 【数据结构和算法】全面剖析树的各类遍历方法 二叉树 概念 二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻
阅读全文