-
208. 实现 Trie (前缀树)Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
请你实现 Trie 类:
Trie() 初始...
-
递归算法的原理 一个递归函数的调用类似于多个函数的嵌套调用,只不过调用函数和被调函数都是同一个函数。在解决递归问题时,最重要的是不要陷入递归的逻辑中去,视角要以一个节点为根基来考虑整个问题。递归调用时内部的执行过程如下:
首先...
-
自定义栈的功能 本文旨在通过Go语言来实现一个自定义的栈,其功能包括入栈、出栈、栈容量查询、栈内元素个数查询、栈顶元素查询、是否空栈查询。
栈的初始化首先创建一个能保存数据的结构体:
1type Stack []interfac...
-
本文会介绍两道比较有技巧性的算法与数据结构题,都是和随机读取元素相关的。这些问题的技巧性子阿宇如何将哈希表和数组结合起来,使得数组的删除操作时间复杂度变成O(1)。
实现随机集合O(1) 时间插入、删除和获取随机元素
设计一个...
-
本文主要参考来源《Go Web编程》
HTTP协议介绍 HTTP协议是一种让web服务器与浏览器(客户端)通过网络发送和接收数据的协议。它建立在TCP之上,默认采用TCP的80端口。浏览器(客户端)每发出一个请求,服务器响应这个...
-
sort库基本介绍 该包实现了四种基本的排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,它们只被用于 sort 包内部使用。所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了 sor...
-
什么是URL? URL 代表着是统一资源定位符(*Uniform Resource Locator*)。URL 无非就是一个给定的独特资源在 Web 上的地址。理论上说,每个有效的 URL 都指向一个唯一的资源。这个资源可以是一...
-
双指针算法类型 双指针的问题主要可以归为两类,一类是「快慢指针」,主要解决链表中的问题,比如典型的判定链表中是否包含环;另一类是「左右指针」,主要解决数组(或者字符串)中的问题,比如二分查找。
快慢指针的常见算法 &e...
-
滑动窗口主要应用于子串问题,遇到这类问题不要犹豫,直接考虑使用滑动窗口。作为双指针类问题最难掌握的技巧,其设计思路其实非常简单,就是通过两个指针维护一个窗口,通过前后指针的不断向前滑动,然后更新答案。该算法的大致逻辑如下:
1...
-
在一开始学习算法的时候,我对动态规划和贪心算法一直都只有个模糊的概念,不明白两者到底有什么区别,感觉思路都差不太多。于是在本文的开头,我想对比一下贪心算法和动态规划的区别和联系。动态规划和贪心算法都是用来求最优化问题,且二者都...