- 前言这篇文章,我们一起来解决一道与链表相关的经典面试题:复杂链表(带随机指针)的复制。1.题目介绍我们先来一起了解一下这道题:这道题是《剑指offer》上的一道经典题目:在力扣上也有原题:链接: link这篇文章,就给大家详细讲解一下这道题。我们一起来看一下题目:题目呢,看起来还挺长的。但是我们不能上去被题目就吓到了,其实这个题目就是让我们复制链表嘛,给我们一个链表,我们要自己再创建一个和它... 前言这篇文章,我们一起来解决一道与链表相关的经典面试题:复杂链表(带随机指针)的复制。1.题目介绍我们先来一起了解一下这道题:这道题是《剑指offer》上的一道经典题目:在力扣上也有原题:链接: link这篇文章,就给大家详细讲解一下这道题。我们一起来看一下题目:题目呢,看起来还挺长的。但是我们不能上去被题目就吓到了,其实这个题目就是让我们复制链表嘛,给我们一个链表,我们要自己再创建一个和它...
- 前言上一篇文章我们学习了单链表,同时我们提到了链表其实有很多种结构:带头或不带头,循环或不循环。但其实,最常用的还是两种结构:上一篇文章我们已经学了单链表(不带头),那这篇文章,我们就来学习一下带头双向循环链表。带头双向循环链表实现1. 结构介绍首先,从结构上来说,带头双向循环链表是结构最复杂的:它带哨兵位的头结点,还是双向的,还循环。带头双向循环链表一般用来单独存储数据。实际中使用的链表数... 前言上一篇文章我们学习了单链表,同时我们提到了链表其实有很多种结构:带头或不带头,循环或不循环。但其实,最常用的还是两种结构:上一篇文章我们已经学了单链表(不带头),那这篇文章,我们就来学习一下带头双向循环链表。带头双向循环链表实现1. 结构介绍首先,从结构上来说,带头双向循环链表是结构最复杂的:它带哨兵位的头结点,还是双向的,还循环。带头双向循环链表一般用来单独存储数据。实际中使用的链表数...
- 前言上一篇文章,我们学习了顺序表,在文章的最后,我们提出了一些顺序表存在的问题和缺陷。我们再来回顾一下,对于顺序表来说:中间/头部的插入删除,时间复杂度为O(N)realloc扩容(特别是异地扩,需要申请新空间,拷贝数据,释放旧空间)会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就... 前言上一篇文章,我们学习了顺序表,在文章的最后,我们提出了一些顺序表存在的问题和缺陷。我们再来回顾一下,对于顺序表来说:中间/头部的插入删除,时间复杂度为O(N)realloc扩容(特别是异地扩,需要申请新空间,拷贝数据,释放旧空间)会有不小的消耗。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就...
- 前言线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种。1. 认识线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组... 前言线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种。1. 认识线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组...
- 3. 空间复杂度3.1 空间复杂度的概念空间复杂度又是什么呢?空间复杂度也是一个问题规模n的函数,是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是计算程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译... 3. 空间复杂度3.1 空间复杂度的概念空间复杂度又是什么呢?空间复杂度也是一个问题规模n的函数,是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是计算程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。注意:函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译...
- 前言什么是数据结构?数据结构是计算机存储、组织数据的方式。指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算... 前言什么是数据结构?数据结构是计算机存储、组织数据的方式。指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算...
- 数据类型是编程语言中的一个重要概念,它定义了数据的类型和提供了特定的操作和方法。在 python 中,数据类型的作用是将不同类型的数据进行分类和定义,例如数字、字符串、列表、元组、集合、字典等。这些数据类型不仅定义了数据的类型,还为数据提供了一些特定的操作和方法,例如字符串支持连接和分割,列表支持排序和添加元素,字典支持查找和更新等。因此,选择合适的数据类型是 python 编程的重要组成部... 数据类型是编程语言中的一个重要概念,它定义了数据的类型和提供了特定的操作和方法。在 python 中,数据类型的作用是将不同类型的数据进行分类和定义,例如数字、字符串、列表、元组、集合、字典等。这些数据类型不仅定义了数据的类型,还为数据提供了一些特定的操作和方法,例如字符串支持连接和分割,列表支持排序和添加元素,字典支持查找和更新等。因此,选择合适的数据类型是 python 编程的重要组成部...
- 我们熟知的内存开辟方式有两种:第一种便是通过“int”等关键字为变量开辟空间;第二种便是通过数组开辟一段连续的空间。如下:int val = 20;//在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间但是这样开辟的空间有俩个特点:1. 空间开辟大小是固定的。2. 数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分配但有的时候我... 我们熟知的内存开辟方式有两种:第一种便是通过“int”等关键字为变量开辟空间;第二种便是通过数组开辟一段连续的空间。如下:int val = 20;//在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间但是这样开辟的空间有俩个特点:1. 空间开辟大小是固定的。2. 数组在声明的时候,必须指定数组的长度,它所需要的内存在编译时分配但有的时候我...
- 前言 毕业季转眼即到,工作成为毕业季的头等大事,必须得认认真真进行知识储备,迎战笔试、电面、面试。 许久未接触排序算法了。平时偶尔接触到时自己会不假思索的百度,然后就是Ctrl+C、Ctrl+V,好点的话封装为一个排序工具供以后使用。这样的学习方法百害而无一益,只因自己缺少了思索,未能真正理解到算法的核心精髓所在。下面系统的对快速排序、堆排序、冒泡排序、插入排序、选择排序、归... 前言 毕业季转眼即到,工作成为毕业季的头等大事,必须得认认真真进行知识储备,迎战笔试、电面、面试。 许久未接触排序算法了。平时偶尔接触到时自己会不假思索的百度,然后就是Ctrl+C、Ctrl+V,好点的话封装为一个排序工具供以后使用。这样的学习方法百害而无一益,只因自己缺少了思索,未能真正理解到算法的核心精髓所在。下面系统的对快速排序、堆排序、冒泡排序、插入排序、选择排序、归...
- 这篇文章我们一起来学习一下C/C++程序的内存开辟以及柔性数组!!!1. C/C++程序的内存开辟C和C++的内存开辟方式是非常类似的,这篇文章我们就来学习一下C/C++程序的内存开辟。在之前的文章里其实我们简单的介绍过C语言中的内存划分。大致可以分为:栈区,堆区和静态区:那今天,我们来更加细致的细致的讲解一下C/C++程序的内存开辟。首先,我们来看一张图:这张图更细致的划分了一下内存,接下... 这篇文章我们一起来学习一下C/C++程序的内存开辟以及柔性数组!!!1. C/C++程序的内存开辟C和C++的内存开辟方式是非常类似的,这篇文章我们就来学习一下C/C++程序的内存开辟。在之前的文章里其实我们简单的介绍过C语言中的内存划分。大致可以分为:栈区,堆区和静态区:那今天,我们来更加细致的细致的讲解一下C/C++程序的内存开辟。首先,我们来看一张图:这张图更细致的划分了一下内存,接下...
- 从这篇文章开始,我们来学习C语言中的自定义类型(构造类型),今天来看第一种自定义类型——结构体,一起来学习吧!!!1.认识结构体前面我们已经学习过了很多的数据类型,整型、浮点型、指针类型等等。1.1为什么要学习结构体类型已经有这么多数据类型了,那我们为什么还要学习结构体类型呢?因为在开发的过程中,我们有时候难免要去描述一些复杂的对象,而想要描述这些对象,我们再使用之前学过的int,doubl... 从这篇文章开始,我们来学习C语言中的自定义类型(构造类型),今天来看第一种自定义类型——结构体,一起来学习吧!!!1.认识结构体前面我们已经学习过了很多的数据类型,整型、浮点型、指针类型等等。1.1为什么要学习结构体类型已经有这么多数据类型了,那我们为什么还要学习结构体类型呢?因为在开发的过程中,我们有时候难免要去描述一些复杂的对象,而想要描述这些对象,我们再使用之前学过的int,doubl...
- 一、情景回顾时间:2016.9.18 15:00-17:00地点:山东省网络环境智能计算技术重点实验室事件:滴滴笔试总体来说,滴滴笔试内容体量不算多,主要分为19道选择题、1道多选题,2道编程题、1道简答题(也不简单)。 二、选择题考查知识点:二叉树某层中节点个数(2i-1)、费波纳茨数列应用(上9级台阶的方法-分1步、2步)、Linux下文件软、硬链接。还有各种计算题(10个人握手,每个... 一、情景回顾时间:2016.9.18 15:00-17:00地点:山东省网络环境智能计算技术重点实验室事件:滴滴笔试总体来说,滴滴笔试内容体量不算多,主要分为19道选择题、1道多选题,2道编程题、1道简答题(也不简单)。 二、选择题考查知识点:二叉树某层中节点个数(2i-1)、费波纳茨数列应用(上9级台阶的方法-分1步、2步)、Linux下文件软、硬链接。还有各种计算题(10个人握手,每个...
- 企业笔试过程中会涉及到数据结构的方方面面,现将有关图的深度优先搜索与广度优先搜索进行整理归纳,方便日后查阅。在已做过的笔试题目中,可用DFS解决的题目有:“地牢逃脱”–网易“遍历最短路径长度”–携程“小青蛙走迷宫”–滴滴三道题目都是DFS的经典应用,主要采用递归+回溯的方式。下面主要讲解一下DFS与BFS的具体实现。 深度优先搜索(DFS) && 广度优先搜索(BFS)package cn.... 企业笔试过程中会涉及到数据结构的方方面面,现将有关图的深度优先搜索与广度优先搜索进行整理归纳,方便日后查阅。在已做过的笔试题目中,可用DFS解决的题目有:“地牢逃脱”–网易“遍历最短路径长度”–携程“小青蛙走迷宫”–滴滴三道题目都是DFS的经典应用,主要采用递归+回溯的方式。下面主要讲解一下DFS与BFS的具体实现。 深度优先搜索(DFS) && 广度优先搜索(BFS)package cn....
- 一、情景回顾时间: 2016.9.23 12:00-14:00 19:00-21:00地点: 山东省网络环境智能计算技术重点实验室事件: 笔试注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间。当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃! 二、结构体总体来说,题目不算太难。尤其是编程题,思路很清晰,不涉及到太复杂的算法。只有第三题可能涉及到递... 一、情景回顾时间: 2016.9.23 12:00-14:00 19:00-21:00地点: 山东省网络环境智能计算技术重点实验室事件: 笔试注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间。当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃! 二、结构体总体来说,题目不算太难。尤其是编程题,思路很清晰,不涉及到太复杂的算法。只有第三题可能涉及到递...
- CopyOnWriteArraySet是Java中的一个线程安全的集合类,它是通过使用CopyOnWriteArrayList来实现的。下面是CopyOnWriteArraySet的底层原理:CopyOnWriteArraySet内部维护了一个CopyOnWriteArrayList,它是一个可变数组,所有的修改操作都会对底层数组进行一次拷贝。当需要进行修改操作时,CopyOnWriteAr... CopyOnWriteArraySet是Java中的一个线程安全的集合类,它是通过使用CopyOnWriteArrayList来实现的。下面是CopyOnWriteArraySet的底层原理:CopyOnWriteArraySet内部维护了一个CopyOnWriteArrayList,它是一个可变数组,所有的修改操作都会对底层数组进行一次拷贝。当需要进行修改操作时,CopyOnWriteAr...
上滑加载中
推荐直播
-
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步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签