分享

算法题收集

 沧海九粟 2007-05-13
有n个数,从1到n+1,是无序排列,其中缺少k,请找出k。要求时间复杂度和空间复杂度尽量低。
从头部开始,swap( a[i], a[ a[i]-1 ] ),如果a[i] = n+1,那么i++并记录最大数n+1的位子,直到遍历结束,
此时除了n+1,其它的数都回到了等于自己的数值的位子,并且n+1这个数的位置就是缺少的k,这个算法无需开辟额外的空间
 
 判断一个单向链表是否存在环路,要求时间复杂度和空间复杂度尽量低。
定义两个指针,开始都指向head,然后其中一个一次向后移一个节点,一个一次向后移二个节点,如果相遇,则说明有环
 
 N!末尾共有几个0。
只要考慮有多少個5就能找出有多少個0,一个数最多有5的个数是x = floor(log5N)
末尾0的个数就是  N / 5 + N / 52 + N / 53 + ... + N / 5x
 
 有序排列的一组数,给定一个数,要求在这一组数中找出两个数a和b,使得a+b=给定的数,
       要求将所有的组合都找出来,并且时间和空间复杂度尽量低。
在小于这个给定数的部分,从两头开始做加法,结果 =时记录,>时看同侧下一个,<时一侧停异侧前进,直到相遇
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多