算法leetcode
文章平均质量分 60
算法思路简记
三七、
eeeee,曲项向天歌
展开
-
Python分治法实现大整数相乘
思路是将大整数(A*B)通过分治法拆分成(A1+A2)B,如果A1数位长度仍然大于某个阈值(以下代码为8位数),则继续拆分。B也一样。辛辛苦苦写完后,发现题友直接使用python自带运算AB也能通过,查证得知Python整数大小没有限制。人生苦短,python牛逼。import sysdef add(n1, n2): n1 = n1[::-1] n2 = n2[::-1] ...原创 2019-03-05 15:57:11 · 3841 阅读 · 2 评论 -
动态规划学习笔记
视频地址:https://www.bilibili.com/video/BV1xb411e7ww?from=search&seid=104750769818529595751. 动态规划题目类型求最大最小值计数:有多少种方式(走到右下角?选出k个数和为sum??)求存在性(谁获胜?能不能选出k个数和为sum?)分类二坐标型序列型划分型区间型背包型最长序列型博弈型综合型2. dp组成部分一:确定状态状态是dp的定海神针,用一个数组记录,需要知道每个数组元素dp[i原创 2021-05-13 10:14:06 · 140 阅读 · 0 评论 -
【笔记】二分查找和快速排序
二分查找关键点判断逻辑只有if - elseif条件中只能是单纯的<或>,不能有等号因为if中是单纯的大于或小于,对应的边界收缩就是mid+1或mid-1else中对应的边界收缩至mid跳出循环后左边界为搜索结果查找target最右边的位置。 int search(vector<int>& nums, int target) { if(nums.empty()) return -1; int l = 0, r = (原创 2021-03-16 22:20:36 · 101 阅读 · 0 评论 -
高级数据结构:并查集、单调栈、单调队列
文章目录一、并查集1.1 适用问题类型1.2 基本api1.3 实现代码及原理1.4 练习题目1.5 推荐学习资料二、单调栈2.1 适用问题类型2.2 实现原理及代码2.4 练习题目三、单调队列3.1 适用问题类型3.2 基本api3.3 实现代码及原理3.4 练习题目一、并查集1.1 适用问题类型并查集可用于求图中是否存在环(这个当然也可以用拓扑排序)、图连通相关问题。1.2 基本api个人习惯将并查集抽象为一个类使用。并查集的基本操作与名称来由相关,及并操作和查操作,根据题目需求,可能会出现原创 2021-03-06 15:52:23 · 553 阅读 · 0 评论 -
dijkstra堆优化代码详解
阅读堆优化代码之前,首先要弄懂dijkstra的基础思路,建议b站找个视频看下图解过程,二十分钟足矣。以上虽然是求概率最大路径,和通常求最短路劲相反,但思路相同。struct Node { double p; // 该结点到源点的当前最大概率 int node_id; bool operator < (const Node &b) const { return p < b.p; } //使用重载小于运算,从而利用优先队列模板};原创 2020-07-24 15:24:52 · 462 阅读 · 0 评论 -
平衡搜索树:概念区分
关键词:二叉查找树(BST)、红黑树、平衡二叉树(AVL)、B树、B+树,BST这个很好区分,红黑树、AVL树都属于BSTAVL树在计算机科学中,AVL(named after inventors Adelson-Velsky and Landis)树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。红黑树红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以原创 2021-02-01 10:40:43 · 132 阅读 · 0 评论