- 博客(246)
- 资源 (2)
- 收藏
- 关注
原创 可视化图解算法:二叉树的层序遍历
对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。
2025-04-03 11:02:57
598
原创 可视化图解算法: 二叉树的后序遍历
对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。
2025-04-01 10:37:33
1001
原创 可视化图解算法: 二叉树的中序遍历
对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-31 18:14:04
962
原创 可视化图解算法: 二叉树的前序遍历
对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-29 11:01:52
1023
原创 可视化图解算法:递归基础
写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。
2025-03-28 11:22:48
439
原创 可视化图解算法:删除有序(排序)链表中重复的元素-II
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-27 11:39:33
693
原创 可视化图解算法:删除有序(排序)链表中重复的元素
删除有序链表中重复的元素(重复的元素需要保留一个),可以通过以下步骤完成:(1)定义操作节点指针变量;(2)循环删除链表重复节点;(3)返回头结点。
2025-03-25 19:39:40
917
原创 可视化图解算法:链表的奇偶重排(排序链表)
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-24 17:27:47
929
原创 可视化图解算法:单链表的排序(排序链表)
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-24 11:07:14
786
原创 可视化图解算法:判断一个链表是否为回文结构(回文链表)
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-22 11:55:25
944
原创 可视化图解算法:链表相加( 两数相加)
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-21 11:11:08
822
原创 可视化图解算法: 两个链表的第一个公共节点
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-20 10:57:50
846
原创 可视化图解算法:删除链表中倒数第n个节点
删除链表的倒数第n个节点 ,可以通过以下步骤完成:(1)定义快慢指针;(2)移动快指针;(3)快慢指针一起移动;(4)执行删除节点操作;(5)特殊情况处理。难点是很容易忽略特殊情况的处理。
2025-03-19 11:33:16
1102
原创 可视化图解算法:链表中倒数(最后)k个结点
获取链表的倒数(最后)第k个节点,可以通过快慢指针快速获取到:- 定义快慢指针。- 移动快指针 k 次(每次移动1个节点)。- 快慢指针一起移动(每次移动1个节点),一直到快指针fast指向Null停下来。- 快指针指向为None,慢指针指向的节点为:倒数第k个节点。
2025-03-18 11:28:31
725
原创 可视化图解算法:链表中环的入口节点(环形链表 II)
环入口节点的查找可以采用以下步骤:- 定义快慢指针;- 移动快慢指针;- 更改快指针fast的指向- 快慢指针第二次相遇,相遇节点为环入口节点。
2025-03-17 17:20:21
719
原创 可视化图解算法:判断链表中是否有环(环形链表)
判断链表是否存在环有个**小技巧**:**快慢指针法**。定义2个指针变量(即快慢指针),初始化时快慢指针都指向头节点,每次快指针每次移动 2 个节点,慢指针每次移动 1 个节点。如果 快指针指向的节点为null或者快指针指向节点的下一个节点为空,则链表没有环;如果快慢指针相遇则有环。
2025-03-17 11:02:22
794
原创 可视化图解算法:合并k个已排序(升序)的链表
本题可以通过小顶堆完成,具体步骤为: - 定义(引用)小顶堆;- 每个链表的第一个节点放入堆中;- 从堆中取出元素(取出的元素为节点值最小的),构成新的链表;- 返回新链表的头节点。难点在于小顶堆的应用。
2025-03-14 12:22:40
921
原创 可视化图解算法:合并两个有序(排序)的链表
合并两个有序的链表,可以通过:定义临时虚拟头节点与指针变量、循环合并两个链表、链接剩余链表节点和返回头节点4步来完成,本题的难点在于思路,即想到用虚拟头结点tmpHead、操作节点cur、链表1与链表2值比较节点h1、h2。
2025-03-13 10:39:48
688
原创 可视化图解算法:链表中的节点每k个一组翻转(反转)
链表K个一组进行翻转,可以通过3步完成。第一步:获取链表长度;第二步:进行groups组的反转;第三步:衔接剩余的节点。难点是对一组反转之后的链表节点如何连接,即在操作链表节点时指针变量的定义、移动。
2025-03-12 11:44:02
680
原创 可视化图解算法:链表指定区间反转
对于链表内指定区间反转的反转,可以通过5步操作完成:(1)定义一个临时链表头节点;(2)定义(找到)截取区间外的指针变量:pre、post,截取区间指针变量:left、right;(3)切断链接;(4)翻转局部链表;(5)接回原来的链表。对于第4步局部反转用到了上一篇所讲的内容。
2025-03-11 17:07:47
659
原创 可视化图解算法:反转链表
本题的难点在于定义出3个指针变量,pre(序节点)、cur(当前操作的节点)和nxt(当前操作的下一个节点),并在初始化的时候明确指向,之后就可以更改cur的指针域(nxt)、移动pre、cur。给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据结构笔试面试算法-Go语言版,bilibili课堂,哔哩哔哩课堂,哔哩哔哩,Bilibili,B站,弹幕。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
2025-03-10 17:53:22
939
原创 可视化+图解:轻松搞定链表
对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。
2025-03-07 19:13:54
628
原创 为什么要学习数据结构与算法
向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
2025-03-04 16:12:14
361
原创 Python指定函数参数和返回值的类型
函数注解本质上是Python语言中特殊的注释语法,可以提供更好的代码可读性和明确度,但并不会进行类型检查。在函数内部,仍然可以传递任何类型的参数和返回任何类型的值。(Function Annotation)来指定函数参数和返回值的类型。函数注解是Python 3引入的一种语法,允许。如果要进行类型检查,可以在函数中使用isinstance或其他类型检查函数来验证函数的参数和返回值是否符合预期类型。来指定函数参数和返回值的类型, 但这并不会影响函数的行为。
2023-07-05 11:24:35
2122
原创 国密sm2不同平台对接
4.如go对应的tjfoc/gmsm/sm2库加解密的密文前是添加了04的,如果要解密 https://webencrypt.org/sm2samplecryptjs/ 这里加密的密文,需要在密文前添加04。2.如这里的 https://webencrypt.org/sm2samplecryptjs/ 公钥前添加了04,但是密文前没有04.1.对不同的平台(语言)国密接口对接时,需要检查开始位,如公钥前加0x04、密文前加0x04,其实04代表未压缩。)加密的数据,到go服务程序解密,会出现。
2023-06-05 14:41:17
1100
1
原创 国密SM4——golang的实现
SM4算法使用32轮的非线性迭代结构。SM4在最后一轮非线性迭代之后加上了一个反序变换,因此SM4中只要解密密钥是加密密钥的逆序,它的解密算法与加密算法就可以保持一致。1. CBC分组模式(Cipher Block Chaining ,密码分组链模式)以上代码中,SM4用到的库为:github.com/tjfoc/gmsm。SM4算法是我国商用密码标准,其前身是SMS4算法。整体逻辑结构如图所示,经过32轮变换把明文变换为密文。SM4算法类似于国际密码算法AES。,分组长度和密钥长度均。
2023-05-08 14:51:19
3744
原创 国密SM3——golang的实现
SM3密码杂凑算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3适用于商用密码应用中的数字签名和验证,是在[]基础上改进实现的一种算法,其。
2023-05-08 14:37:49
1237
原创 国密SM2——golang的实现
由于 RSA 算法和 ECC 算法这一明显不同,使得 ECC 算法的单位安全强度高于 RSA算 法。由于SM2是基于椭圆曲线的公钥加密算法,与RSA一样都是非对称密码算法。SM2是国家密码管理局于2010年12月17日发布的。也就是说,要达到同样的安全强度,
2023-05-08 14:28:31
2972
1
原创 Golang中json.Marshal避坑
1、介绍Golang库自带了json序列化与反序列化方法,type Marshalertype Marshaler interface { MarshalJSON() ([]byte, error)}实现了Marshaler接口的类型可以将自身序列化为合法的json描述。type Unmarshalertype Unmarshaler interface { UnmarshalJSON([]byte) error}实现了Unmarshaler接口的对象可
2022-04-22 17:53:13
11907
原创 Python列表生成式
列表生成式是一种基于其他iterable(如集合、元组、其他列表等)创建列表的方法。它还可以用更简单、更吸引人的语法表示for和if循环。列表生成式比for循环要快得多。列表生成式的基本结构如下:List=[ expression for item in iterable (if conditional) ]示例:if __name__ == '__main__': print('+++++++++++++++++ 简单用法 ++++++++++++++++') wo.
2022-04-13 10:39:05
1070
原创 RSA no_padding加密(modulus、exponent构造公钥)
RSA no_padding加密(modulus、exponent构造公钥)
2022-01-26 15:42:18
9104
1
原创 Go语言(Golang)超时机制
机制1:select+time.After通过select+time.After方法实现超时机制,示例代码如下:package mainimport ( "context" "fmt" "runtime" "time")func main() { timeout1() println("Goroutine数量:",runtime.NumGoroutine()) time.Sleep(time.Second*10) println("Goroutine数量:",runtim
2021-11-21 22:51:47
2658
原创 设计模式——Go语言(Golang)版:24_迭代器模式
示例代码:package mainimport ( "fmt")//迭代器接口type Iterator interface { First() IsDone() bool Next() interface{}}//迭代的数据集type Aggregate interface { Iterator() Iterator}type Numbers struct { start, end int}//实现迭代器接口对应的功能type NumbersIterator s
2021-04-08 09:08:28
418
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人