![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 53
r_martian
这个作者很懒,什么都没留下…
展开
-
Go map底层结构实现原理
map结构是一种比较常用的数据结构,存储k/v映射关系集合,根据key能够快速的查找对应的v。 go的map是基于hashtable实现,冲突解决采用拉链法 map 底层实现结构包含hmap和bmap两个,下面详细说一下(注go.1.17.1版本) hmap结构 // A header for a Go map. type hmap struct { count int //元素个数 flags uint8 //状态标记 B uint8 .原创 2022-01-24 11:15:33 · 1235 阅读 · 0 评论 -
【算法】二叉树层序遍历
层序,即按层,从左到右输出,思路是queue实现bfs即可 /** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($val = 0, $left = null, $right = null) { *原创 2021-05-06 09:35:07 · 74 阅读 · 0 评论 -
【深度】动态规划解决背包类问题
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法 1 原理 问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题最优解,再构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解 动态规划在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。比如背包问题(Knapsa原创 2020-06-09 23:00:28 · 266 阅读 · 0 评论 -
【深度】带你读懂一致性哈希算法
一、传统哈希算法 传统的哈希表通常使用下面的方法将key映射到数组的索引(index): hash = hashFunc(key) index = hash % arraySize 这种方法的不足之处是当arraySize发生改变后,所有的key都需要重新映射(remapped),因为索引的值是对arraySize求余运算获得的。 这种技术可以用于把应用程序的数据分散存储到多个数据库中,从而实现...原创 2019-11-17 09:55:25 · 480 阅读 · 0 评论 -
【算法】二分查找
二分查找是比较常用且高效的查找算法,原理是给定一个有序数组和待查找target,利用分治思想进行搜索。 默认数组是升序,时间复杂度O(logn),空间复杂度O(1) <?php #二分查找 function BinarySearch(Array $arr, $target) { $length = count($arr); if (!is_...原创 2018-07-08 09:42:49 · 199 阅读 · 0 评论 -
算法时间复杂度和空间复杂度
通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时...转载 2018-08-29 11:01:04 · 393 阅读 · 1 评论 -
scrapy xpath和css用法详解
学习scrapy框架,根据页面抽取需要的数据,xpath,css必须要知道! 一、Xpath基本语法 1、常用的路径表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 //div / 从根节点选取 /div // 选取所有的节点,不考虑他们的位置 //div . 选取当前节点 ....转载 2019-07-18 08:11:22 · 500 阅读 · 0 评论