自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

超悦人生

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

  • 博客(86)
  • 收藏
  • 关注

原创 一文搞懂高频面试题之四种常用的限流算法,从算法原理到实现,再到对比分析

看完这篇,还敢说你不会限流算法?本文对常用的限流算法计数器固定窗口算法、滑动窗口算法、漏斗算法和令牌桶算法进行了分别介绍,并给出具体的实现。

2020-09-09 16:29:22 4784 1

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

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

2020-01-26 18:59:34 6794

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

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

2020-01-18 13:01:10 6394

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

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

2020-01-12 23:54:54 8098 3

原创 面试官:来写个代码求一下两个数的最大公约数吧

面试官真的只是想让你写个代码吗?

2020-09-04 19:05:29 5694

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

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

2020-01-16 20:43:49 3504

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

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

2020-01-14 18:28:30 5146

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

最近做项目用git向github推送时,总是出现大于100M的文件导致push失败,每次都要手动找到大于100M的文件,然后修改.gitattributes,用git-fls 上传,很麻烦,所以就用Java写了一个自动检测Git仓库中大于100M的文件,并将其添加到.gitattributes的程序,代码如下所示。使用时只需要将main函数中的gitRepositoryDir路径改为自己仓库的路径即可。另外修改.gitattributes文件的方法是注释了的,还是建议手动添加,不然出问题很麻烦。

2020-01-10 10:42:53 598

原创 Java中Vector与ArrayList的区别

ArrayList与Vector的区别主要包括两个方面:.线程安全性Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它 的方法之间是线程不同步的。所以如果是多线程访问的话,最好使用Vector,可以避免编写保证线程之间安全的代码。数据增长二者都有一个初始容量大小,采用线性连续存储空间;当Vector或ArrayList中的元素超过它的初始...

2020-01-02 16:38:07 191

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

java中常用的List的实现类有ArrayList、LinkedList和Vector。ArrayList底层通过数组实现,查询速度快,增删改慢。LinkedList底层通过链表实现,增删改快,查询速度慢。Vector底层是数组结构,但是Vector是线程同步的,所以它也是线程安全的,效率比ArrayList低。选取原则在开发中的选取时主要考虑以下几个问题:线程安全性问题如果...

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

原创 java语言实现位图

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

2019-12-29 18:21:47 297 1

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

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

2019-12-24 10:50:09 6923

原创 LeetCode 458. Poor Pigs

LeetCode 458. Poor Pigs

2019-11-29 15:27:07 143

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

问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解决方案创建一个栈,如果栈顶元素是要待弹出序列的值,则弹出,否则一直压栈,直...

2019-11-09 16:16:52 230

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

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

2019-11-02 21:31:30 230

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

问题描述请实现一个函数用来匹配包括’.‘和’ * ‘的正则表达式。模式中的字符’.'表示任意一个字符,而 ’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但是与"aa.a"和"ab * a"均不匹配解决方案递归解决,代码如下: public boolean...

2019-10-31 10:26:14 551

原创 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.The column number n should always be an odd number....

2019-10-31 09:43:14 185

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

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

2019-10-30 19:52:03 459

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

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

2019-10-30 19:09:33 830 1

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

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

2019-10-28 23:01:25 270

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

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

2019-10-28 22:50:48 89

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

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

2019-10-28 22:29:46 253

原创 矩形覆盖

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

2019-10-28 20:51:12 82

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

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

2019-10-28 20:40:38 173

原创 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 complexity should be O(log (m+n)).You may assume nums1 ...

2019-10-25 23:56:20 97

原创 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); root.next.next = new Node(3); root.next.n...

2019-10-25 16:00:17 239

原创 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 20 / \ 15 7Output: [3, 14.5, 11]Exp...

2019-10-25 11:12:15 338

原创 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.Example:Given the below binary tree and sum = 22...

2019-10-25 10:37:54 161

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

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

2019-10-24 10:31:46 482

原创 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 column indices of the matrix.解决方案代码如下:public int...

2019-10-24 10:30:26 189

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

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

2019-10-23 21:20:00 231

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

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

2019-10-23 21:19:33 227

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

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

2019-10-23 21:18:59 182

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

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

2019-10-23 21:17:27 207

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

问题描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。解决方案首先找到数组中元素最小的位置索引,然后分开进行二分查找...

2019-10-23 21:16:57 158

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

问题描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。解决方案如果二分中点元素的值和数组最后一个元素的值相同,那么依次向后移动mid元素,循环即可,代码如下:public boolean...

2019-10-23 21:16:23 203

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

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

2019-10-23 21:15:41 253

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

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

2019-10-23 21:15:09 246

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

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

2019-10-23 16:26:11 4022

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

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

2019-10-23 11:51:46 546

空空如也

空空如也

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

TA关注的人

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