算法
文章平均质量分 69
DSIslander
这个作者很懒,什么都没留下…
展开
-
求中位数问题:最小堆,最大堆
具体思路:用一个最大堆存放比中位数小(或等于)的元素,用一个最小堆存放比中位数大(或等于)的元素。这里关键的方法是insert(),每当要插入一个元素时,根据判断条件将它插入最大堆或是最小堆,并更新最大堆和最小堆,使得最大堆和最小堆中元素的个数之差不超过1,这样中位数就是最大堆或最小堆的堆顶元素。当最大堆和最小堆中元素个数不同(个数相差为1)时,元素个数多的那个堆的堆顶元素即为中位数;如果两者转载 2012-12-03 12:05:59 · 1538 阅读 · 0 评论 -
算法--找出数组中出现次数超过一半的数
算法--找出数组中出现次数超过一半的数作者:陈太汉算法--找出数组中出现次数超过一半的数 每当我看到经典的算法题,就怀念高中,感觉很多算法题就是高中的题目,谁叫哥只读了个专科,高数基本相当没学。 有空要看看高数啊,想当年数学那是相当的......#include using namespace std;class FindTheOne{p转载 2012-11-21 23:34:26 · 530 阅读 · 0 评论 -
一个数组存放了2n+1个整数,其中有n个数出现了2次,1个数出现了1次,找出出现1次的数是多少?
//方法四:异或运算(博客园这位帅哥牛) //异或运算 0与任何数异或等于任何数,相等的两个数异或等于0, //也就是两个数对应的二进制位进行异或运算;0^0=0 , 1^0=1 , 0^1=1 , 1^1=0 //出现偶数次都完蛋了,就剩下出现奇数次的了 public int FindSpecial(int[转载 2012-11-21 23:49:46 · 1796 阅读 · 1 评论 -
不改变正负数之间相对顺序重新排列数组
不改变正负数之间相对顺序重新排列数组一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。比如: input: 1,7,-5,9,-12,15 ,ans: -5,-12,1,7,9,15 。且要求时间复杂度O(N),空间O(1)说一个O(n)时间,O(1)空间的方法。 开一个Int[32]数组,可以在O(n转载 2012-11-22 00:22:52 · 2380 阅读 · 0 评论 -
二叉树以及二叉搜索树的重建
1) 二叉树的重建。提供,前序和中序 Or 后序和中序。算法:前序或者后序作为主要数据来源,中序用来确定递归位置的分割。Node* buildTreePreIn(string pres, string ins){ Node* root = new Node; root.val = pres[0]; int index = ins.fi原创 2012-12-05 10:05:22 · 1017 阅读 · 0 评论 -
判断两个链表是否相交
判断两个链表是否相交 2012-01-09 10:37:03| 分类: 默认分类 | 标签: |字号大中小 订阅给出两个单向链表的头指针,判断这两个链表是否相交,如果相交给出相交的第一个结点一、两个链表均不含有环链表相交如下图 方法一:直接法 直接判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大方转载 2012-11-23 18:47:03 · 660 阅读 · 0 评论 -
输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和
输入一个整形数组,数组里有正数也有负数,数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。题目来源于:http://blog.csdn.net/v_JULY_v/a转载 2012-11-23 23:03:50 · 7815 阅读 · 2 评论 -
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部)
这几天一直在看了July写了【横空出世,席卷互联网 [评微软等公司数据结构+算法面试100题】,里面的好多算法都很不错,所以决定把看过掌握地并亲自试验一遍没有问题后再写到自己的博客中,当然算法的思想及实现都会注明来自何方。文章来自:http://blog.csdn.net/v_JULY_v/archive/2011/04/14/6322882.aspx算法一:左旋转字符串题目描转载 2012-11-23 23:27:24 · 1461 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表,要求输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表
题目:把二元查找树转变成排序的双向链表,要求输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。题目来自:http://topic.csdn.net/u/20101023/20/5652ccd7-d510-4c10-9671-307a56006e6d.html 思路:一看到这样的问题首先想到的是二叉树的遍历问题,具转载 2012-11-23 23:36:42 · 527 阅读 · 0 评论