摘要:
如果n为偶数,则将它除以2,如果n为奇数,则将它加1或者减1。问对于一个给定的n,怎样才能用最少的步骤将它变到1。例如:n=61n--60n/230n/215n++16n/28n/24n/22n/21算法设计:首先想到的是递规算法,不过细想一下我们可以动态规划:设a(i)为整数i用最少步骤变成1的解... 阅读全文
摘要:
在由N个正整数的集合S中,找出最大元素M,满足M=A + B,其中A,B都是集合S中元素思路1:首先对集合S排序,时间复杂度nlogn,然后对排序后的集合做hash,空间复杂度n,M从S中的最大值开始遍历,再内层遍历集合中的每个数x,到hash表里检测M-x是否在集合中思路2:先对集合排序,时间复杂... 阅读全文