- 前言上一篇博主写了一些关于HashMap的前置知识,简单易懂:HashMap源码解读(上篇)下面将深入HashMap源码,进行解读。看源码不是盲目看书,要有的放矢,带着疑问去看。本文章将围绕这几个疑问展开:HashMap的哈希函数是如何设计的?put方法的逻辑是什么?到底是如何存储元素的?当发生冲突时,是如何解决的?哈希表冲突比较严重时,如何扩容resize? 一、进入JDK中的源码(In... 前言上一篇博主写了一些关于HashMap的前置知识,简单易懂:HashMap源码解读(上篇)下面将深入HashMap源码,进行解读。看源码不是盲目看书,要有的放矢,带着疑问去看。本文章将围绕这几个疑问展开:HashMap的哈希函数是如何设计的?put方法的逻辑是什么?到底是如何存储元素的?当发生冲突时,是如何解决的?哈希表冲突比较严重时,如何扩容resize? 一、进入JDK中的源码(In...
- 前言树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根... 前言树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根...
- 前言上一篇讲了栈和栈的经典面试题,链接如下:栈与栈的经典面试题其实栈和队列是一码事,都是对只能再线性表的一端进行插入和删除。因此,其实栈和队列可以互相转换! 一、队列的特点先进先出的数据结构,元素从“队尾”添加到队列中,元素从“队首”出队列 (FIFO) 二、队列的实现1.基于链表实现队列现实生活中,有各式各样的“排队”操作。同样的,队列也有基于数组实现的队列和基于链表实现的队列。由于出... 前言上一篇讲了栈和栈的经典面试题,链接如下:栈与栈的经典面试题其实栈和队列是一码事,都是对只能再线性表的一端进行插入和删除。因此,其实栈和队列可以互相转换! 一、队列的特点先进先出的数据结构,元素从“队尾”添加到队列中,元素从“队首”出队列 (FIFO) 二、队列的实现1.基于链表实现队列现实生活中,有各式各样的“排队”操作。同样的,队列也有基于数组实现的队列和基于链表实现的队列。由于出...
- 前言在观看此篇博文之前必须会的前置知识:线性表:一次保存单个同类型元素,多个元素之间逻辑上连续例如:数组,链表,栈,队列,字符串(内部就是char[])栈和队列其实是==操作受限==的线性表上述讲的数组也罢,链表也罢,既可以在头部插入和删除,也能在尾部插入和删除,甚至可以在任意位置都可以插入和删除。"栈和队列"只能在一端插入元素和删除元素 一、栈的特点先进后出,后进先出的线性表 (LIFO... 前言在观看此篇博文之前必须会的前置知识:线性表:一次保存单个同类型元素,多个元素之间逻辑上连续例如:数组,链表,栈,队列,字符串(内部就是char[])栈和队列其实是==操作受限==的线性表上述讲的数组也罢,链表也罢,既可以在头部插入和删除,也能在尾部插入和删除,甚至可以在任意位置都可以插入和删除。"栈和队列"只能在一端插入元素和删除元素 一、栈的特点先进后出,后进先出的线性表 (LIFO...
- 问题描述这是LeetCode上的一道算法题,博主整理了三种解题思路和方法,希望可以帮助大家提升算法的思维。给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O... 问题描述这是LeetCode上的一道算法题,博主整理了三种解题思路和方法,希望可以帮助大家提升算法的思维。给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O...
- 问题描述这是LeetCode上的一道算法题,笔者整理了三种解题思路和方法,希望可以帮助大家提升算法的思维。给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetC... 问题描述这是LeetCode上的一道算法题,笔者整理了三种解题思路和方法,希望可以帮助大家提升算法的思维。给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetC...
- 前言博主之前有写过关于递归问题的思维模式:递归的思路下面将用这种思维模式来求解经典汉诺塔问题。 一、问题描述汉诺塔(又称河内塔)问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。问应该如... 前言博主之前有写过关于递归问题的思维模式:递归的思路下面将用这种思维模式来求解经典汉诺塔问题。 一、问题描述汉诺塔(又称河内塔)问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。问应该如...
- 问题描述:前几天遇到了一个小问题:为了简化,我手打了一段简单的代码,如下:import java.util.Scanner;public class Test01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.printl... 问题描述:前几天遇到了一个小问题:为了简化,我手打了一段简单的代码,如下:import java.util.Scanner;public class Test01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.printl...
- 前言之前有写过IDEA如何从创建项目到类的详细步骤。以下是链接:《JAVA SE》IntelliJ IDEA创建项目以及注意事项下面将会给老铁们介绍一下Java数据类型和运算符的一些注意的要点。 一、八大基本数据类型和引用类型数据类型分为八大基本类型以及引用数据类型,以下是博主用XMind做的思维导图:注意:1.String在Java中是属于引用类型。2.类名称的首字母大写。3.布尔型只有... 前言之前有写过IDEA如何从创建项目到类的详细步骤。以下是链接:《JAVA SE》IntelliJ IDEA创建项目以及注意事项下面将会给老铁们介绍一下Java数据类型和运算符的一些注意的要点。 一、八大基本数据类型和引用类型数据类型分为八大基本类型以及引用数据类型,以下是博主用XMind做的思维导图:注意:1.String在Java中是属于引用类型。2.类名称的首字母大写。3.布尔型只有...
- 很多老铁不清楚JAVA主方法中main()里面的的参数是什么意思,以及有什么作用,接下来给大家用最通俗易懂的话来讲解。 很多老铁不清楚JAVA主方法中main()里面的的参数是什么意思,以及有什么作用,接下来给大家用最通俗易懂的话来讲解。
- 无法吃午餐的学生数量 题目学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜... 无法吃午餐的学生数量 题目学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜...
- Go语言三个最常用且最重要的数据结构:string、slice、map,在之前的文章中我们介绍了这三个数据结构的简单使用,如下:《Go基本数据结构的使用:string、slice、map》而这次我们单独用一篇文章重点剖析一下Go语言的slice,也就是切片,看下切片和数组到底有什么不同。 1 Go语言中切片和数组的简单介绍为什么要拿数组和切片放在一起讲呢,因为两者无论是在使用上还是在形态上都... Go语言三个最常用且最重要的数据结构:string、slice、map,在之前的文章中我们介绍了这三个数据结构的简单使用,如下:《Go基本数据结构的使用:string、slice、map》而这次我们单独用一篇文章重点剖析一下Go语言的slice,也就是切片,看下切片和数组到底有什么不同。 1 Go语言中切片和数组的简单介绍为什么要拿数组和切片放在一起讲呢,因为两者无论是在使用上还是在形态上都...
- 二叉树相关OJ题目练习,你值得学习 二叉树相关OJ题目练习,你值得学习
- BF算法为什么要先来说BF算法❓BF算法可以说是KMP算法的基础,KMP算法是建立在BF算法之上的。所以学习BF算法之后能够让我们更快的去理解KMP算法内容,所以我们就先BF算法说起。什么是BF算法❓BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符... BF算法为什么要先来说BF算法❓BF算法可以说是KMP算法的基础,KMP算法是建立在BF算法之上的。所以学习BF算法之后能够让我们更快的去理解KMP算法内容,所以我们就先BF算法说起。什么是BF算法❓BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符...
- 队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头 队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低话不多说,我们直接来实现队列:(一定要... 队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头 队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低话不多说,我们直接来实现队列:(一定要...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签