有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=给定的数,
要求将所有的组合都找出来,并且时间和空间复杂度尽量低。
在小于这个给定数的部分,从两头开始做加法,结果 =时记录,>时看同侧下一个,<时一侧停异侧前进,直到相遇
|
|