数据结构
文章平均质量分 78
Csoap994
这个作者很懒,什么都没留下…
展开
-
散列表
散列表可能是最有用的,也被称为散列映射、映射、字典和关联数组。性能一条水平线,看到了吧?这意味着无论散列表包含一个元素还是10亿个元素,从其中获取数据所需的时间都相同。实际上,你以前见过常量时间——从数组中获取一个元素所需的时间就是固定的:不管数组多大,从中获取一个元素所需的时间都是相同的。在平均情况下,散列表的速度确实很快。在最糟情况下,散列表所有操作的运行时间都为O(n)——线性时间,这...原创 2018-10-08 15:18:55 · 250 阅读 · 0 评论 -
PHP之数据结构与算法实现
PHP数据结构的算法实现二分查找二叉搜索树单链表双向链表二分查找//二分查找$data = array(4,6,7,8,14,55,67,145,218,237,284);function binarySearch($data, $num){ $count = count($data); $high = $count - 1; $low = 0; while...原创 2019-03-06 00:54:00 · 686 阅读 · 0 评论 -
不用临时变量交换两个数据
利用一个小技巧,一个整数a在异或另一个整数b两次以后所得的值还是整数a。具体的过程我们可以自己找两个整数以二进制的形式自己在纸上画一下他们的异或过程。(异或的运算符号为"^")比如: 下面给出交换两个整数位置的代码,不需要临时变量temp。运行结果:public class Aa { public static void main(String[] args) ...转载 2019-02-19 11:30:29 · 274 阅读 · 0 评论 -
字典树(Trie树):应用于统计和排序
1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开...转载 2019-02-02 15:40:57 · 428 阅读 · 0 评论 -
二分查找:理论法
理论:二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。...原创 2019-02-02 14:01:42 · 205 阅读 · 0 评论 -
Leetcode 22. 括号生成(Generate Parentheses) javascript
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。思路和算法只有在我们知道序列仍然保持有效时才添加 ‘(’ or ‘)’,我们可以通过跟踪到目前为止放置的左括号和右括号的数目来做到这一点,如果我们还剩一个位置,我们可以开始放一个左括号。 如果它不超过左括号的数量,我们可以放一个右括号。/** * @param {number} n * @retu...原创 2019-02-02 00:08:43 · 465 阅读 · 0 评论 -
Leetcode 50 Pow(x, n) javascript
实现 pow(x, n) ,即计算 x 的 n 次幂函数。/** * @param {number} x * @param {number} n * @return {number} */var myPow = function(x, n) { return x ** n; };//Runtime: 76 ms//递归思路var myPow = function(x, n) ...原创 2019-01-31 16:40:11 · 574 阅读 · 0 评论 -
判断单链表是否有环
思路如下:0.5s或者1s内定时判断是否结束,结束就对应无环。没经过一个位置做一个标记,判断是否出现重复 O(n);快慢指针,快指针每次执行+2,慢指针每次执行+1,遍历如果出现快慢指针同时指向同一个位置,则对应有环,如下:...原创 2019-01-08 10:15:32 · 461 阅读 · 0 评论 -
LeetCode的刷题之路(javascript版本,持续更新)
目录堆1.有效的括号刷题思路:按照标签,从简单到困难,依次刷过去。堆1.有效的括号原创 2018-11-27 13:04:54 · 702 阅读 · 0 评论 -
广度优先搜索
广度优先搜索指出是否有从A到B的路径。如果有,广度优先搜索将找出最短路径。面临类似于寻找最短路径的问题时,可尝试使用图来建立模型,再使用广度优先搜索来解决问题。有向图中的边为箭头,箭头的方向指定了关系的方向,例如,rama→adit表示rama欠adit钱。无向图中的边不带箭头,其中的关系是双向的,例如,ross - rachel表示“ross与rachel约会,而rachel也与ros...转载 2018-10-09 13:56:27 · 128 阅读 · 0 评论 -
C#之实现简单线性表
自定义线性接口using System;namespace LeanCsharp{ interface IListDS<T> { int GetLength(); void Clear(); bool IsEmpty(); void Add(T item); void Insert(T...原创 2019-09-16 00:59:50 · 426 阅读 · 0 评论