自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

超悦人生

原创公众号【超悦编程】,专注于算法、数据结构和互联网基础知识。

原创 《一文说透数据结构》系列之什么是堆?看这一篇就够了

本文将首先介绍什么是堆,然后介绍了堆的插入和删除操作,最后给出了堆的代码实现,并进行了测试。

2020-01-26 18:59:34 804 0

原创 《深入浅出话数据结构》系列之什么是B树、B+树?为什么二叉查找树不行?

本文将为大家介绍B树和B+树,首先介绍了B树的应用场景,为什么需要B树;然后介绍了B树的查询和插入过程;最后谈了B+树针对B树的改进。

2020-01-18 13:01:10 482 0

原创 为什么要有红黑树?什么是红黑树?画了20张图,看完这篇你就明白了

为什么要有红黑树?什么是红黑树?画了20张图,看完这篇你就明白了

2020-01-12 23:54:54 1772 1

原创 都2020年了,听说你还不会归并排序?手把手教你手写归并排序算法

本文介绍了归并排序的基本思想,递归方法的一般写法,最后一步步手写归并排序,并对其性能进行了分析。

2020-01-16 20:43:49 508 0

原创 为什么会有多线程?什么是线程安全?如何保证线程安全?(带详细例子)

1. 为什么会有多线程? 2. 什么是线程安全?3. 怎么样保证线程安全?

2020-01-14 18:28:30 858 0

原创 Git仓库超过100M大文件自动检测并修改.gitattributes文件程序(java实现)

最近做项目用git向github推送时,总是出现大于100M的文件导致push失败,每次都要手动找到大于100M的文件,然后修改.gitattributes,用git-fls 上传,很麻烦,所以就用Java写了一个自动检测Git仓库中大于100M的文件,并将其添加到.gitattributes的程...

2020-01-10 10:42:53 148 0

原创 Java中Vector与ArrayList的区别

ArrayList与Vector的区别主要包括两个方面:. 线程安全性 Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它 的方法之间是线程不同步的。所以如果是多线程访问的话,最好使用Vector,可以避免编写保证线程之间安全的代码。 数据增长 ...

2020-01-02 16:38:07 39 0

原创 java中ArrayList、LinkedList和Vector的区别与选取

java中常用的List的实现类有ArrayList、LinkedList和Vector。 ArrayList 底层通过数组实现,查询速度快,增删改慢。 LinkedList 底层通过链表实现,增删改快,查询速度慢。 Vector 底层是数组结构,但是Vector是线程同步的,所以它也是线程安全的...

2020-01-02 16:28:11 82 1

原创 java语言实现位图

最近在做项目用到了位图,但是java中没有实现类,就自己写了一个,底层用byte数组进行封装,代码如下: public class BitMap { private int length; private byte[] data; private BitMap(){ ...

2019-12-29 18:21:47 50 0

原创 JS中的clear()方法为什么不起作用?

最近在做项目时,在HTML中编写了一个超链接,超链接调用Js中的clear()方法,但是无论怎么尝试发现clear()方法都不起作用,这是怎么回事呢?HTML中的代码如下:

2019-12-24 10:50:09 910 0

原创 LeetCode 458. Poor Pigs

LeetCode 458. Poor Pigs

2019-11-29 15:27:07 34 0

原创 栈的压入、弹出序列(java实现)

问题描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列...

2019-11-09 16:16:52 33 0

原创 包含min函数的栈(用辅助栈和不用辅助栈两种写法 java实现)

问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 解决方案1 利用一个辅助栈来存储最小值,入栈和出栈时同时维护辅助栈,代码如下: import java.util.Stack; public class Solution { ...

2019-11-02 21:31:30 34 0

原创 正则表达式匹配(java实现)

问题描述 请实现一个函数用来匹配包括’.‘和’ * ‘的正则表达式。模式中的字符’.'表示任意一个字符,而 ’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a....

2019-10-31 10:26:14 76 0

原创 LeetCode655.Print Binary Tree(java实现)

问题描述 Print a binary tree in an m*n 2D string array following these rules: The row number m should be equal to the height of the given binary tree. T...

2019-10-31 09:43:14 66 0

原创 对称二叉树(java实现)

问题描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 解决方案 采用层次遍历,注意空节点也要加入队列,代码如下: /* public class TreeNode { int val = 0; TreeNod...

2019-10-30 19:52:03 161 0

原创 删除链表中重复的节点(Java实现)

问题描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 解决方案 注意边界即可,代码如下: /* public c...

2019-10-30 19:09:33 187 0

原创 按之字形顺序打印二叉树(Java实现)

问题描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 解决方案 代码如下: import java.util.ArrayList; import java.util.LinkedList; ...

2019-10-28 23:01:25 79 0

原创 把二叉树打印成多行(Java实现)

问题描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解决方案 代码如下: import java.util.ArrayList; import java.util.LinkedList; /* public class TreeNode { int val ...

2019-10-28 22:50:48 28 0

原创 二进制中1的个数(Java实现)

问题描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解决方案 代码如下: public int NumberOf1(int n) { if(n == 0) return 0; boolean flag = fa...

2019-10-28 22:29:46 79 0

原创 矩形覆盖

问题描述 我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法? 解决方案 用动态规划来解,f(n) = f(n - 1) + f(n - 2) 代码如下: public int RectCover(int...

2019-10-28 20:51:12 22 0

原创 用两个栈实现队列(Java实现)

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解决方案 代码如下: import java.util.Stack; public class Solution { Stack<Integer> stack1 = new ...

2019-10-28 20:40:38 24 0

原创 LeetCode4. Median of Two Sorted Arrays(java实现)

问题描述 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time comple...

2019-10-25 23:56:20 28 0

原创 LeetCode25. Reverse Nodes in k-Group(每k个节点反转链表,java实现)

问题描述 k个一组反转链表。 解决方案 代码如下: //测试 public static void main(String[] args){ Node root = new Node(1); root.next = new Node(2); ...

2019-10-25 16:00:17 71 0

原创 leetcode.637 二叉树的层平均值(java实现)

问题描述 Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array. Example 1: Input: 3 / \ 9...

2019-10-25 11:12:15 51 0

原创 LeetCode113. Path Sum II(java)

问题描述 Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum. Note: A leaf is a node with no children....

2019-10-25 10:37:54 41 0

原创 矩阵的转置(O(1)空间复杂度)(Java实现)

问题描述 对矩阵求转置,要求空间复杂度为O(1)。 解决方案 public static void matrixTranspose(int[] arr,m,n){ if(arr == null || arr.length <= 1) re...

2019-10-24 10:31:46 135 0

原创 LeetCode867. Transpose Matrix(Java实现)

问题描述 Given a matrix A, return the transpose of A. The transpose of a matrix is the matrix flipped over it’s main diagonal, switching the row and col...

2019-10-24 10:30:26 54 0

原创 LeetCode34.在排序数组中查找元素的第一个和最后一个位置(java实现)

问题描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回[-1, -1]。 解决方案 开始位置和结束位置分别用二分查找,注意边界条件即可,代码...

2019-10-23 21:20:00 54 0

原创 LeetCode74.搜索二维矩阵(java实现)

问题描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 1.每行中的整数从左到右按升序排列。 2.每行的第一个整数大于前一行的最后一个整数。 解决方案 把二维数组当做一维数组来看,二分查找,代码如下: public boolean searchMat...

2019-10-23 21:19:33 46 0

原创 LeetCode240.搜索二维矩阵 II(java实现)

问题描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 1.每行的元素从左到右升序排列。 2.每列的元素从上到下升序排列。 解决方案 从右上角开始搜索,逐步进行,代码如下: public boolean searchMatrix(int[][] ma...

2019-10-23 21:18:59 53 0

原创 LeetCode153.旋转数组的最小数字(java实现)

问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 解决方案 以数组中最后一个元素为基准,进行二分查找,代码如下: ...

2019-10-23 21:17:27 48 0

原创 LeetCode33.搜索旋转排序数组(java实现)

问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必...

2019-10-23 21:16:57 43 0

原创 LeetCode81.搜索旋转排序数组 II(java实现)

问题描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 解决方案 如果二分中点元素的值和数组...

2019-10-23 21:16:23 37 0

原创 LeetCode 69.x 的平方根(java实现)

问题描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 解决方案 注意整型值相乘溢出的问题,用除来判断。比如mid > x / mid,代码如下: public int my...

2019-10-23 21:15:41 61 0

原创 LeetCode668.乘法表中第 k 小的数(java实现)

问题描述 几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第 k 小的数字吗? 给定高度 m 、宽度 n 的一张 m * n的乘法表,以及正整数 k,你需要返回表中第 k 小的数字。 解决方案 首先编写一个计算乘法表中小于等于某个整数的数的个数的函数,然后运用二分查找进行搜索,代码如下:...

2019-10-23 21:15:09 117 0

原创 求根号2的值(两种方法 java实现)

计算根号2的值,保留小数点后10位。二分查找法和牛顿迭代法

2019-10-23 16:26:11 282 0

原创 Kth Number问题的三种解法(java实现)

给定一个无序数组,找到其中第k大的数。分别用堆解法、快排变行、BFPRT算法三张解法实现,并对比分析。

2019-10-23 11:51:46 80 0

原创 求二叉树两个节点的最近公共父节点的两种方法(java实现)

二叉树两个节点的最近公共父节点的两种方法(java实现)

2019-10-20 18:08:18 285 0

原创 数组能否累加至某个数

数组能否累加至某个数. 给定一个数组arr和一个整数aim。如果可以任意选择arr中的数字,能否累加至aim,能则返回true,否则返回false。

2019-10-08 16:01:38 56 0

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