3.如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil视为叶节点,每个叶节点是黑色的
前言:经过前面对java语言的学习,大体的了解了java语言的基础内容和技术栈,而算法这篇,主要是培养我们的编程思维,让我们能在实际问题中运用编程思维解决问题,...
但是缺点也很明显,时间复杂度高 - O(n²),需要 大量重复计算,空间复杂度虽然低,但时间代价太大。由上一节我们学习的双指针法在这也能派上用场,有关数组的查询...
前言:前面我们学习了关于数组的算法题,这一章节,我们会学习关于链表算法题,链表也是一种数据结构,我会在这里介绍一些链表的基础知识,以及如何操作链表。
这时就有同学不理解,为什么快指针要先走n步,当然快指针肯定是比慢指针快的,从名字就看出来了,但具体原理是什么呢?
如果是一长一短的链表,我们先让长链表的指针移动两个链表的长度差的值,让两个链表从同一起点开始,因为我们要找的相交节点,要求可以说是很苛刻,相交节点之后的长度,v...
前言:今天是链表篇章的最后一题,但是对于新手来说,一看题目,就有点胆怯了,这题可以说是纸老虎了,虽然看着不是很简单,其实也不是那么简单,里面需要注意很多细节地方...
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,...
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b],...
前言:我们经过一段时间的学习,已经学习完了哈希表相关章节的算法,关于这些题目的思维导图之后会单独出一个专栏进行记录,下面我们继续学习字符串相关的算法题。
只要左指针在右指针左边,就继续交换。当两个指针相遇或交错时,说明已经全部交换完毕。
接收设备指针:内核会为每一个 ID 表匹配的设备,将一个 struct pci_dev * 指针传递给该函数。
由于最近开始接触嵌入式开发,经常需要阅读和编写C代码,感觉自己对这方面还不够熟悉。因此结合嵌入式相关场景再系统地学习一遍C语言,以便扎实巩固自己的基础知识。
几乎每个开发者每天都在和Git打交道,但分支合并时的灵魂拷问——“到底用Merge还是Rebase?”,却难倒了无数人。有人无脑用Merge,导致仓库提交历史分...
红黑树需要维护颜色翻转、旋转等复杂规则,代码量庞大;跳表的逻辑更直观,插入、删除操作仅需调整指针,易于实现和调试。
链表的本质是 “用指针串联离散数据”,其核心价值在于灵活的内存管理和高效的插入 / 删除操作。它不仅是数据结构的基础,更是理解复杂数据结构(如树、图)的关键 —...
在Go语言的开发过程中,你是否遇到过这样的困惑:明明返回了一个空指针,为什么接口判断却不等于nil?这个问题看似简单,却隐藏着Go语言接口实现的重要细节。结合我...
很多 MCU 的内核,对栈指针的对齐有严格要求,比如 Cortex-M 内核要求栈指针必须 4 字节对齐,部分指令要求 8 字节对齐。如果栈的起始地址、栈指针没...
在Go语言的世界里,零值(Zero Value)是一个基础而重要的概念。当我们声明一个变量但没有初始化时,Go会自动为其赋予零值:数值类型为0,布尔类型为fal...