
基础算法
文章平均质量分 74
fy2462
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
找出出现次数最多的几个数值
这道题目所说的出现最多的几个数值,其实是带有附加条件的: 这几个数值中出现次数最少的那个数,要比除这几个值外的其他数的总个数要多。(说的自己都有点晕-_-!) 这样才能在最后结果中,呈现这几个数。所以必须按照数据源中的统计量分析出求前几位的数值。 其代码如下: #include #include using namespace std; void Find(int data[],原创 2014-06-17 14:59:49 · 1498 阅读 · 0 评论 -
最大公约数的快速求法
本题为编程之美中的第2.7题,上面的解法比辗转相除发的时间复杂度要小很多。看完之后用while循环代替了递归重写了一下。 废话少说,上源码:原创 2014-06-17 15:14:03 · 1056 阅读 · 0 评论 -
并查集的实现
1、概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 2、基本操作 并查集是一种非常简单的数据结构,它主要未来解决如下两种经常性操作而产生的,分别为: A. 合并两个不相交集合 B. 判断两个元素是否属于同一个集合(经常性) (1原创 2014-06-17 15:06:16 · 898 阅读 · 0 评论 -
字符串移位包含问题
在编程之美3.1中,此题解法是用strstr()函数,并且以空间换时间,其实只要用循环遍历即可 其时间复杂度: k 代码如下 #include using namespace std; int findSubStr(char source[], char subStr[], int sLen, int oLen) { if(source == NULL || subStr ==原创 2014-06-17 15:29:55 · 681 阅读 · 0 评论 -
二叉树中查找两个节点的最低公共祖先
这是一道企业面试中,经常会被问到的面试题目。 在网上看到一些此题的实现,其中有两种方法是比较适合编程的。本项目的源代码,请点击这里下载。 方法一: 此方法是根据二叉树的DFS查找并标记祖先,根据递归出栈的原理,找到公共祖先。 其主要代码如下:原创 2014-06-17 14:24:18 · 4359 阅读 · 1 评论 -
无序链表排序
需求给定一个无序的链表,输出有序的链表。分析链表排序比较特殊,由于不连续的性质,所以在进行排序的时候要引入外排思想,因此归并排序或者多路归并就成为了排序的选择。 归并排序分为拆分、合并两个阶段: 1. 拆分 需要拆分出链表中间节点,并赋值NULL阶段,形成两个独立的链表,直到拆分成单个节点为止。 2. 合并 由于此时没个链表都为单节点,所以实质上是个有序链表合并问题。代码下面原创 2016-05-20 09:45:11 · 3098 阅读 · 1 评论