
数据结构与算法
wchzh2015
这个作者很懒,什么都没留下…
展开
-
快速幂,矩阵快速幂,使用矩阵快速幂求斐波那契数列
学习 矩阵的乘法和快速幂的一些理解(适用初学者) 快速幂讲解 【算法竞赛进阶指南】 0x01 位运算 学习笔记 练习 a^b 64位整数乘法原创 2019-04-16 20:36:26 · 699 阅读 · 0 评论 -
逆元
学习逆元知识普及(扫盲篇) —— from Judge 逆元的求法总结(3种基本方法+4种实现) 逆元原创 2019-04-14 16:39:05 · 302 阅读 · 0 评论 -
最长公共子串和最长公共子序列
最长公共子串比如字符串:“abcdefgh”,则其中的一个子串为:“def”,就是一段连续的字符串。子串要求在原字符串中是连续的。最长公共子序列比如字符串:“abcdefgh”,则其中的一个子序列为:“df”,其中子序列的每个字符可以不连续。子序列则只需保持相对顺序一致,并不要求连续。学习:LeetCode-DP算法 | 最长公共子序列和最长公共子串区别 求两个字符...原创 2019-04-14 19:38:19 · 273 阅读 · 0 评论 -
动态规划
学习:什么是动态规划?动态规划的意义是什么? Dynamic Programming Junior Dynamic Programming——动态规划初步·各种子序列问题原创 2019-04-14 22:03:02 · 106 阅读 · 0 评论 -
拓扑排序
学习拓扑排序入门(真的很简单)原创 2019-04-14 22:07:32 · 126 阅读 · 0 评论 -
并查集入门与进阶
学习 数据结构4——并查集(入门) 并查集(进阶) 【坐在马桶上看算法】啊哈算法13:零基础彻底弄懂"并查集" 练习 145. 超市原创 2019-04-17 18:24:21 · 247 阅读 · 0 评论 -
72.编辑距离
学习博客:详解编辑距离(Edit Distance)及其代码实现应用:编辑距离题目描述:给定两个单词word1和word2,计算出将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符示例1:输入: word1 = "horse", word2 = "ros"输出: 3...原创 2019-05-18 11:22:31 · 616 阅读 · 0 评论 -
鸽笼原理
参考:鸽笼原理应用:287. 寻找重复数 https://www.cnblogs.com/grandyang/p/4843654.html原创 2019-05-29 14:57:10 · 529 阅读 · 0 评论 -
stringstream 用法
在使用C++编程的时候,有时会输入一段英文句子,如果使用Python原因的话,那么直接使用 split() 函数就好了。那么使用C++有没有方便的方法呢?这就不得不提到stringstream。stringstream这里参考大佬的博客,自己就不再重述了c++ stringstream(老好用了) stringstream的简单用法当然如果将一个字符串表示的整数转换为in...原创 2019-06-19 22:09:58 · 1702 阅读 · 0 评论 -
希尔排序
希尔排序直接插入排序算法适用于基本有序的排序表和数据量不大的排序表。 空间效率:仅使用了常数个辅助单元,因而空间复杂度是O(1) 时间效率:依赖于增量序列的函数,这涉及数学上尚未解决的难题,所以时间复杂度分析比较困难。最坏情况下O(n^2),当n在某个特定的范围时,为O(n^1.3) 适用性:仅适用于当线性表为顺序存储的情况,且数据量不大。参考文献:https://blog...原创 2019-07-13 10:50:41 · 308 阅读 · 0 评论 -
排序-计数排序
参考文献:什么是计数排序?原创 2019-09-16 15:30:01 · 138 阅读 · 0 评论 -
前缀和,差分数组
前缀和 一维数组的前缀和对于数组 a[0] - a[n],如果求区间 L~R之间的数组和(0<=L<=n, 0<=R<=n),那么就是将a[L] 和 a[R] 之间的所有的数相加,但是如果提前知道前L项的和sum[L] 以及前R项的和 sum[R],那么所求的结果就是 sum[L] - sum[R]。这里sum[L] 以及sum[R] 就是前缀和。二维数组的...原创 2019-04-13 14:56:38 · 596 阅读 · 0 评论 -
GeeksforGeeks 智力题
博客中整理了学习GeeksforGeeks 站点的智力题。作为自己的学习历程。会在学习中不断的更新。目录Puzzle 1 | (How to Measure 45 minutes using two identical wires?)Puzzle 2 | (Find ages of daughters)Puzzle 3 | (Calculate total distance tra...原创 2019-04-16 14:56:04 · 1758 阅读 · 0 评论 -
BFS 和 DFS
文中的代码和部分图参考了Graph and its representations目录图的表示的方法:DFS,参考:Depth First Search or DFS for a Graph访问存在孤立点的图下面也是一种写法:参考算法录 之 BFS和DFSDFS的非递归写法BFS(广度优先搜索)参考:Breadth First Search or BFS for ...原创 2019-04-12 17:37:04 · 244 阅读 · 0 评论 -
排序-桶排序
参考文献:什么是桶排序?原创 2019-03-29 16:38:30 · 126 阅读 · 0 评论 -
处理海量数据的相关算法问题
说明:这篇博客是自己在学习的时候,遇到的比较好的,特此借鉴来学习,整理留存,方便学习之用。如有侵权之处,可以联系我删除,感谢牛人的分享。实现的相关技术:分而治之/hash映射 + hash统计 + 堆/快速/归并排序; 双层桶划分 Bloom filter/Bitmap; Trie树/数据库/倒排索引; 小白详解 Trie 树 为什么 360 面试官说 Trie 树没...原创 2019-03-30 16:25:24 · 217 阅读 · 0 评论 -
有关字符串的相关算法
说明:这篇博客是自己在学习的时候,遇到的比较好的,特此借鉴来学习,整理留存,方便学习之用。如有侵权之处,可以联系我删除,感谢牛人的分享。学习:字符串匹配的三个算法(KMP+字典树+AC自动机)AC自动机AC自动机 算法详解(图解)及模板 AC自动机算法详解 (转载)Trie 树小白详解 Trie 树...原创 2019-03-30 16:32:29 · 266 阅读 · 0 评论 -
二分查找
练习:数据结构也不难:二分查找模版与例题 LeetCode应用:二分查找前提条件是已经排好序的序列。#include <iostream>#include <algorithm>#include <bits/stdc++.h>using namespace std;// 如下写法的比较//right=n-1 => w...原创 2019-03-26 21:12:25 · 143 阅读 · 0 评论 -
排序-归并排序
基本思想“归并”的含义就是将两个或两个以上的有序表组合成一个新的有序表。下面的示意图来自博客图解排序算法(四)之归并排序代码:(递归版本)#include <iostream>#include <cstdio>#include <cstring>#include <bits/stdc++.h>using namesp...原创 2019-03-26 21:17:40 · 122 阅读 · 0 评论 -
排序-堆排序
还不是很完整,后面会陆续补充堆的定义:n个关键字序列L[0...n-1]称为堆,当且仅当该序列满足:L(i) <= L(2i + 1) 且 L(i) <= L(2i + 2) ,此为最小堆。 L(i) >= L(2i + 1) 且 L(i) >= L(2i + 2) ,此为最大堆。算法步骤:利用给定数组创建一个堆H[0...n-...原创 2019-03-26 21:18:13 · 368 阅读 · 0 评论 -
排序-冒泡排序及优化
冒泡排序在每一轮循环中,依次比较相邻的元素。如果是 从大到小排序,则每次将两个元素中较大的一个元素往后交换;如果是从小到大排序,则每次将两个元素中较小的一个元素往前交换。图1——冒泡排序的模拟示意图输入待排序数组:array[4, 6, 5, 8, 9, 3, 2, 1, 7],在这里默认是从小到大排序。原始版本1时间复杂度O(n^2),空间复杂度O(1)#i...原创 2019-03-24 15:03:54 · 256 阅读 · 0 评论 -
排序-插入排序
插入排序:整个待排序的序列分为有序区和无序区,取第一个元素作为初始有序区,然后从第二个开始,依次插入到有序区的合适位置,直到排好序。#include <iostream>#include <cstdio>#include <cstring>#include <bits/stdc++.h>using namespace std;...原创 2019-03-24 17:19:44 · 195 阅读 · 0 评论 -
排序-快速排序
快速排序快速排序的定义可以参考维基百科快速排序,这里就不再赘述。 这里也有一个我觉得比较好的博客,下面的图像也是借鉴这篇博客极客学院-快速排序递归法:#include <iostream>#include <cstdio>#include <cstring>#include <bits/stdc++.h>us...原创 2019-03-27 11:27:46 · 195 阅读 · 0 评论 -
数据结构基本算法
这个博客是汇总自己学习数据结构的一些基本的算法,当做一个汇总的目录各种算法的模拟动态图:VisuAlgo参考的维基百科排序目录排序查找树图论算法知识点智力题C++ STL排序排序-快速排序 排序-冒泡排序及优化 排序-插入排序 排序-希尔排序 排序-堆排序 排序-归并排序 排序-计数排序 排序-基数排序 排序-桶排序...原创 2019-03-28 22:24:38 · 316 阅读 · 0 评论 -
二叉树的遍历-先序遍历,中序遍历,后序遍历
二叉树的建立以及基本的遍历方式:本文的非递归遍历方式的内容参考了C++实现二叉树 前、中、后序遍历(递归与非递归)非递归实现过程最简洁版本 更简单的非递归遍历二叉树的方法先序遍历:根左右void PreOrder(BTtree &T){ if(T) { cout<< T->val << ' ';...原创 2019-04-03 10:25:26 · 307 阅读 · 0 评论 -
排序-基数排序
参考文献: 分配排序之"基数排序"原创 2019-09-16 16:00:42 · 139 阅读 · 0 评论