![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
拜占庭里一棵草
这个作者很懒,什么都没留下…
展开
-
找一个无序数组第m大的数的算法
在一个个数为n的无序数组中找第m大的数,基本思想无非还是排序的思想,只不过需要我们稍微对现有的排序算法做些改动。首先最简单的冒泡,插入排序,我们可以先直接排序,然后遍历到第m大的数,这个复杂度应该就是O(n^2),稍微想一下,我们好像还可以只维护一个大小为m的数组用来存储前m大的数,这样复杂度就降低了一些,变成了O(n*m)。关于冒泡,插入,至今我只想出这两个算法,如有其他好的算法欢迎分享。原创 2015-03-16 10:14:29 · 1745 阅读 · 0 评论 -
求解一棵树的直径
一棵树的深度的定义:一棵树中所有的点到根节点的距离最大值算法1.如果一棵树只有一个根节点,返回深度为 0,直径为 02.否则,遍历一棵树的根节点的所有的子节点,利用本方法求出所有子树深度中最大的两个 n1>=n2以及所有子树中直径最大值 m3.将n1 加1作为本树的深度返回4.如果n1+n2+2>m, 则将n1+n2+2作为本树的直径返回,否则将 m作为本树原创 2015-03-07 13:12:12 · 886 阅读 · 0 评论 -
数组中有三个数只出现一次,其它的数恰好出现两次,找出这三个数。
具体的题意如题当我第一次碰到这类题的时候是宿舍的舍友分享的,当时他说的问题还要简单一些,具体的题意是"数组中只有一个数只出现一次,其它的数恰好出现两次,找出这个数。" 当时我的第一感觉就是要用到快排,因此得出第一种算法,将数组进行快排的第一层排序,然后从中间分开,数字的个数是奇数的一边肯定包含我们要求的数,然后这样迭代下去,一直到找到那个数为止,复杂度为 O(n)。随后他告诉我他的解法原创 2015-11-21 22:56:53 · 1201 阅读 · 0 评论