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