自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap原理,HashMap,HashTable, ConcurrentHashMap对比

HashMap原理1.7及之前,默认链式Hash存储从 JDK 1.8 开始,一个桶存储的链表长度大于等于 8 时会将链表转换为红黑树。用key的hashCode值对容量取模, 开链法,头插法。如果size >= threshold(这个由装载因子决定)时, 进行扩容,容量扩为原来的两倍(方便重新计算下标,比如原来的位置+原容量),重新把key, value插入。HashMap,HashTable, ConcurrentHashMap对比HashMap是非线程安全的, 允许null值(因为

2020-08-24 21:55:01 169

原创 JAVA多线程实现,线程状态,线程池使用,Threadlocal

有三种使用线程的方法:实现 Runnable 接口;实现 Callable 接口;与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。继承 Thread 类。同样也是需要实现 run() 方法,因为 Thread 类也实现了 Runable 接口。当调用 start() 方法启动一个线程时,虚拟机会将该线程放入就绪队列中等待被调度,当一个线程被调度时会执行该线程的 run() 方法。实现 Runnable 和 Callable 接口的类只

2020-08-24 21:42:05 295

原创 Leetcode 201. 数字范围按位与

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0tips: 转换为求m, n 的最长公共前缀class Solution { public int rangeBitwiseAnd(int m, int n) { if(m == 0) { return 0;

2020-08-23 18:06:47 202

原创 JVM 内存模型,垃圾回收,垃圾收集器

运行时数据区域:线程共有:方法区、堆方法区:用于存放已被加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。堆:所有的对象都在这里分配内存,是垃圾收集的主要区域,现代的垃圾收集算法都采用分代收集算法,可以将堆分为两块,新生代,老生代。不需要连续的内存,可以动态增加,增加失败会抛OOM异常。线程私有:程序计数器,虚拟机栈,本地方法栈程序计数器:记录正在执行的虚拟机字节码指令的地址虚拟机栈:每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调

2020-08-23 14:41:41 161

原创 LeetCode 面试金典 面试题 02.08. 环路检测

给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tail connects to node index 0解释:链表中有一个环,其尾部连接到第

2020-08-18 15:11:06 104

原创 LeetCode 面试金典面试题 02.06. 回文链表

编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-linked-list-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。O(n) 时间复杂度和 O(1

2020-08-18 14:30:35 147

原创 LeetCode 程序员面试金典 面试题 03.05. 栈排序

栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。示例1:输入:[“SortedStack”, “push”, “push”, “peek”, “pop”, “peek”][[], [1], [2], [], [], []]输出:[null,null,null,1,null,2]示例2:输入:[“Sorted

2020-08-17 17:04:31 198

原创 LeetCode 程序员面试经典面试题 04.06. 后继者

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 12/ \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \3 6/ 2 4/1输出: null有递归法和非递归法:思想类似, 与root 节点比较,若p.val >= root.val, 从右子

2020-08-16 22:14:01 141

原创 LeetCode 110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 / \ 2 2/ \3 3/ 4 4返回 false 。tips : 自顶向上法, 时间复杂度O(n)cla

2020-05-10 20:25:22 119

原创 Leetcode 518. 零钱兑换 II

给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入: amount = 3, coins = [2]输出: 0解释: 只用面额2...

2020-04-28 23:42:48 177

原创 LeetCode 144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?tips : 非递归法,使用栈,先压右子节点,再压左子节点。class Solution {public: vector<int> preorderTraversal(TreeNode* root) ...

2020-04-26 16:29:25 136

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

给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?非递归版tips : 使用栈来记录,类似dfs, 先求出其逆后序遍历的结果,然后再反转/** * Definition for a binary tree node. * struct TreeNode { * ...

2020-04-25 15:39:48 107

原创 LeetCode 279. 完全平方数

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.法1: 动态规划,时间复杂度O(n*sqrt(n)), 空间复杂度O(n)class Soluti...

2020-04-24 17:20:26 104

原创 LeetCode 501. 二叉搜索树中的众数

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],12/2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(...

2020-04-23 23:16:24 114

原创 LeetCode 450. 删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。tips : 递归,删除该位置节点后,要用前驱/后继来替代,然后再递归删除节点。cl...

2020-04-15 14:47:24 108

原创 LeetCode 33. 搜索旋转排序数组

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

2020-04-14 22:52:43 141 1

原创 C++ 面试题——实现String类

**需要实现:**构造函数, 拷贝构造函数,复制运算符,析构函数,size函数等等。主要思路:用cstring的一些库函数来实现。底层的数据结构char*会用到 strlen, strcpy等库函数#include <iostream>#include <string>#include <vector>#include<cmath>...

2020-04-12 12:56:31 933

原创 LeetCode 92. 反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULLtips : 需要用多个指针保存位置m, m-1的结点,然后反转,再把链表接起来,要考虑m=1的特殊情况。...

2020-04-03 21:59:07 158

原创 LeetCode 56. 合并区间

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。tips :...

2020-03-31 20:40:10 90

原创 LeetCode 31. 下一个排列

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1tips : 先从后往前找到位置i-1,满足位置i元素大于i...

2020-03-27 00:21:40 91

原创 C++ 实现atoi,memcpy, strcpy

C++ 实现atoi,memcpy, strcpy是C++ 常见面试题int my_atoi(char * str) { bool isPositive=true; if(str==NULL) { return 0; } // 跳过空格字符 while(*str==' ') { str++; } if(*s...

2020-03-25 18:35:56 187

原创 LeetCode 24.两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.tips : 原地交换,时间复杂度O(n), 空间复杂度O(1)class Solution {public: ListNode* swapPairs(L...

2020-03-22 17:15:03 80

原创 LeetCode 41. 缺失的第一个正数

给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1tips : 将大小在1~n之间的元素a,放置到nums[a]处。时间复杂度O(n), 空间复杂度O(1)class Solution {public: int f...

2020-03-21 22:13:15 75

原创 LeetCode 673.最长递增子序列的个数

给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意: 给定的数组长度不超过 2000 并且结果一定是32位有...

2020-03-20 17:48:22 238

原创 常见排序算法C++实现

快速排序:void recursive(vector<int>& vec,int start,int end) { if(start>=end) { return ; } int split_num = vec[start]; int pos = start+1; int i=end; int temp;...

2020-03-20 15:10:26 108

原创 LeetCode 611. 有效三角形的个数

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3tips : 先排序,从后往前遍历,用双指针法。(只要最小的两条边大于最大的边即可构成三角形)class Solution {public: int tr...

2020-03-17 21:37:48 225

原创 LeetCode 221.最大正方形

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4tips:二维动态规划,递推方程:dp[i][j]=min(dp[i-1][j-1],dp[i][j-1],dp[i-1][j])class Solution {public: int ma...

2020-03-17 16:08:49 96

原创 LeetCode 15.三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]tips: 排序+双指针,时间复杂...

2020-03-17 15:14:53 319

原创 Leetcode 79.单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true...

2020-03-15 23:42:14 68

原创 LeetCode 146.LRU缓存机制

运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据...

2020-03-13 19:53:46 76

原创 剑指offer 面试题2:实现单例模式

参考链接:https://www.cnblogs.com/sunchaothu/p/10389842.html版本1:使用静态局部变量,缺点只能在C++11以上环境中运行class Singleton{public: ~Singleton() { cout<<"deconstruct"<<endl; } static Singleton& getI...

2020-03-12 16:02:26 143

原创 LeetCode 23.合并K个排序链表

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6tips: 分治,时间复杂度O(nlogk), 空间复杂度O(1)struct ListNode* mergeTwoListNod...

2020-03-11 21:56:07 75

原创 Leetcode 42.接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解法1:对于位置i, 能存储的雨水取决于向...

2020-03-11 16:46:26 119

原创 LeetCode 54.二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 13/ \1 4\2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3 6/ \2 4/1输出: 4tips: 逆中序遍历, 维护一个全局计数器,当计数器到达k时,记...

2020-03-11 12:58:49 162

原创 LeetCode 328. 奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&g...

2020-03-11 12:23:09 158

原创 LeetCode 338.比特位计数

给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)...

2020-03-10 18:39:30 63

原创 Leetcode 543.二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。tips:递归,开一个全...

2020-03-10 14:53:13 98

原创 Leetcode 235. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,...

2020-03-09 12:47:11 261

原创 Leetcode 322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每...

2020-03-08 16:23:11 119

转载 linux惊群效应

转载自:https://blog.csdn.net/lyztyycode/article/details/78648798 linux惊群效应详细的介绍什么是惊群,惊群在线程和进程中的具体表现,惊群的系统消耗和惊群的处理方法。1、惊群效应是什么?    ...

2020-03-07 23:29:41 98

空空如也

空空如也

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

TA关注的人

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