
算法
Steve_Stone
西电er,在读研究僧。
github:
https://github.com/yohstone
展开
-
网易笔试题-游戏积分(吃鸡游戏积分排行逻辑)
前段时间看到师兄做的网易游戏笔试题,感觉挺有意思的,就做了一下,做的时候发现自己以前学的都忘得差不多了。。因为以前做题基本都是用C语言来写,所以C语言还好,做的时候能回想起来,而C++感觉得重新学才行了。。哎,从今天开始做题吧,并重新开始学习C++和算法。这题就是写个吃鸡游戏的积分排行逻辑,我是基本是用C语言写的,测试用例算出的结果都对(输出排序没写),但还有可能存在错误,等复习完C++和算法...原创 2018-09-05 20:57:08 · 3453 阅读 · 0 评论 -
【数据结构】树:哈夫曼树(Huffman Tree,也称哈弗曼、赫夫曼树)、哈夫曼编码解析与实现(c++)
#笔记整理树的定义参照前文:二叉树、遍历二叉树与线索二叉树等树的定义与解析、二叉树遍历实现哈夫曼树(也称赫夫曼树)相关概念:① 路径长度从树中一个结点到另一个结点之间的分支(树枝)构成这两个结点之间的路径, 路径上的分支(树枝)数目称做路径长度。② 树的路径长度从树根到每一结点的路径长度之和(所有结点到根的路径长度的和)。③ 结点的权和带权路径长度给树的每个结点赋予一个具有某...原创 2019-07-19 12:47:23 · 1014 阅读 · 0 评论 -
【数据结构】排序:排序算法的分类及各类排序算法对比
#笔记整理这几天复习并整理了一下排序算法,发现内容还是挺多的,有些算法和概念很常用也很重要,记录一下。排序排序: 将一组杂乱无章的数据按一定的规律顺次排列起来,使之按关键字递增(或递减)有序排列。排序算法的稳定性(稳定排序,Stable Sort):指当数据中存在2个或2个以上键值相等的元素时,这些元素在排序处理前后顺序不变。由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将...原创 2019-07-14 23:02:11 · 1463 阅读 · 0 评论 -
【数据结构】排序:选择排序(简单选择排序、堆排序等)详解与实现(C++)
#笔记整理选择排序基本思想:每一趟 (第 i 趟,i = 1, …, n-1) 在后面 n-i+1 个待排序记录中选出关键字最小的记录, 作为有序序列的第 i 个记录。简单选择排序(Simple Selection Sort)通过 n−in-in−i 次关键字间的比较,从 n−i+1n-i+1n−i+1 个记录中选取关键字最小的记录,并和第iii个记录交换。算法实现: // 简单选择排...原创 2019-07-14 22:47:45 · 1094 阅读 · 1 评论 -
【数据结构】排序:交换排序(冒泡排序、快速排序)详解与实现(C++)
#笔记整理交换排序交换排序就是基于“交换”规则进行排序的方法,其中包括:冒泡排序(Bubble Sort)、快速排序(Quick Sort)。冒泡排序(Bubble Sort)冒泡排序又称起泡排序,其过程很简单,两两比较相邻的记录,如果反序则交换,直到没有反序的记录为止。算法实现: // 冒泡排序法,对容器或数组nums进行排序 void bubbleSort(vector&...原创 2019-07-14 22:36:27 · 3281 阅读 · 0 评论 -
【数据结构】排序:插入排序(直接插入排序、希尔排序、折半插入排序、2-路插入排序等)详解与实现(C++)
#笔记整理插入排序:(Insertion Sort)插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。共有5种插入排序方法:(1) 直接插入排序;(2) 折半插入排序;(3) 2-路插入排序;(4) 表插入排序;(5) 希尔排序。(1)直接插入排序(Straight Insertion Sort):一种...原创 2019-07-14 22:22:51 · 4895 阅读 · 0 评论 -
【数据挖掘】关联分析之先验(Apriori)原理与Apriori算法
阅读本文之前建议先理解关联分析的基本概念与术语。传送门本文简单介绍关联分析中的先验(Apriori)原理与Apriori算法,持续更新与补充。先验(Apriori)原理原理简介:如果一个项集是频繁的,则它的所有子集一定也是频繁的。相反,如果一个项集是非频繁的,则它所有的超集也是非频繁的。此原理基于支持度的反单调性(anti-monotone):一个项集的支持度绝不会超过它的子集的支持度。...原创 2019-06-15 21:28:19 · 8619 阅读 · 1 评论 -
【leetcode】第69题 x 的平方根 牛顿迭代法实现求平方根函数 C++
这题属于简单题,但是因为学到了新的算法:牛顿迭代法(或牛顿法),这里做一下记录。题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被...原创 2019-06-15 00:34:03 · 8855 阅读 · 0 评论 -
Levenshtein Distance (LD算法) 编辑距离算法原理
莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符。LD算法原理:算法目的:计算出两字符序列的编辑距离,同时也能求出两序列的匹配序列假设:比对的俩序列为:则两序列的长度分别为len(A) = n,Len(B)=m;LD(A,B):字符...原创 2019-04-09 15:31:56 · 6704 阅读 · 1 评论 -
Smith-Waterman算法、Needleman-Wunsch算法的算法原理及算法比较
史密斯-沃特曼算法(Smith-Waterman algorithm)是一种进行局部序列比对(相对于全局比对)的算法,该算法的目的不是进行全序列的比对,而是找出两个序列中具有高相似度的片段。尼德曼-翁施算法(Needleman-Wunsch Algorithm)是基于生物信息学的知识来匹配蛋白序列或者DNA序列的算法。这是将动态算法应用于生物序列的比较的最早期的几个实例之一。该算法是由 Saul...原创 2019-04-09 13:15:06 · 22726 阅读 · 3 评论 -
【leetcode】第3题 无重复字符的最长子串(Longest Substring Without Repeating Characters)做题记录 C++实现
leetcode第3题#3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)今天把第三题做完了,各个方法都尝试了一下,思考与学习的时间有点长,说难也不难,其中有一些坑,趁还记着记录一下。题目描述题目里没有限定字符取值范围,根据做题结果来看,测试集数据中的字符范围是128个ASCII码,没有用到扩展ASCII码。关于解...原创 2019-04-04 00:49:10 · 3017 阅读 · 0 评论 -
【数据结构】排序:归并排序(2路归并排序算法)详解,递归实现与迭代实现(C++)
#笔记整理内部排序分类目录:- 插入排序- 交换排序- 选择排序- 归并排序- 计数排序归并基本思路:是将两个或两个以上的有序表合并成一个新的有序表。2-路归并排序假设初始序列有 n 个记录,首先把它看成是 n 个长度为 1 的有序子序列 (归并项),先做两两归并,得到 n / 2 个长度为 2 的归并项 (如果 n 为奇数,则最后一个有序子序列的长度为1);再做两两归并,…...原创 2019-07-17 18:09:23 · 7724 阅读 · 0 评论