- 前言上一篇博主写了一些关于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)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头 队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低话不多说,我们直接来实现队列:(一定要...
上滑加载中
推荐直播
-
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中
热门标签