经典问题
文章平均质量分 78
yingsun
坚持下去~
展开
-
约瑟夫环-两种实现方法,两种时间复杂度
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为r的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。求最后出列的人的编号。第一种方法就是使用循环链表的方法,因为这种方法在删除一个节点后,对于其他节点的位置改动不用太大。这是一种很浪费时间的方法,每次都删除第m个数字(注意题意包含摸的概念),也原创 2012-11-24 16:32:01 · 10563 阅读 · 0 评论 -
求最小的k个数字和求第k小的数字
求最大的和最小的原理是一样的,只不过是求最大的在应用中用的比较多。举个比较常见的例子,大家都会购物吧,购物的时候如果去京东商城,当搜索某件商品的时候,搜索后的页面会呈现很多该类型的商品,但是京东总会给我们一些推荐,那么这个推荐是依据什么呢?其实道理很简单,京东的后台会记录客户浏览或者购买的某件商品的次数,然后进行统计,把用户浏览次数或者购买次数排名靠前的几件商品放在前几的位置。还有很多其他的应用。原创 2012-12-31 20:58:59 · 5834 阅读 · 0 评论 -
双指针的魅力
在解决问题过程中,经常碰到使用双指针解决的情况,使用双指针,可以很高效很快速的解决问题,罗列一下应用双指针的情况:1,将给定的英文字符串进行反转,例如: I love programming。得到的结果是:.gnimmargorp evol I。下面给出核心代码:#include#includevoid swap_string(char *p_start, char *p_end原创 2013-01-01 10:12:11 · 4346 阅读 · 9 评论