早教吧作业答案频道 -->其他-->
已知有序数列A[1..n]和一个正整数x,设计一个复杂度为O(n)的算法,判断A中是否有两个元素它们的和是x。数列中若是整数我会做,但若是分数该如何求解呢?我的整数解法是用空间换时间,
题目详情
已知有序数列A[1..n]和一个正整数x,设计一个复杂度为O(n)的算法,判断A中是否有两个元素它们的和是x。
数列中若是整数我会做,但若是分数该如何求解呢?
我的整数解法是用空间换时间,就是用x减去所有大于x/2的数,得出结果放在一个大小为[x/2]的数组a中,其值与数组中的位置对应,若有此值,则数组相应位置设为1,然后遍历小于x/2的数,对数m,若数组中对应位置a[m]为1,则返回true,若没有一个对应位置为1,则为false...
数列中若是整数我会做,但若是分数该如何求解呢?
我的整数解法是用空间换时间,就是用x减去所有大于x/2的数,得出结果放在一个大小为[x/2]的数组a中,其值与数组中的位置对应,若有此值,则数组相应位置设为1,然后遍历小于x/2的数,对数m,若数组中对应位置a[m]为1,则返回true,若没有一个对应位置为1,则为false...
▼优质解答
答案和解析
你的算法不够好,如果整数很大(比如都是10亿以上),你哪有那么大的内存去开数组呢?
有一个算法是:
建立两个指针p,q,p指向数组第一个元素,q指向数组最后一个元素,[p]表示p内容,算法可以写成:
while(p x)
break;
}
q--;
}
return false;
数组每个元素最多只被p,q一个指针扫描一次,所以总时间复杂度O(N),而且数组元素可以为任意类型
有一个算法是:
建立两个指针p,q,p指向数组第一个元素,q指向数组最后一个元素,[p]表示p内容,算法可以写成:
while(p x)
break;
}
q--;
}
return false;
数组每个元素最多只被p,q一个指针扫描一次,所以总时间复杂度O(N),而且数组元素可以为任意类型
看了 已知有序数列A[1..n]和...的网友还看了以下:
初二科学`````1.呼吸作用所分解的(),正是光合作用的产物;呼吸作用所释放的(),正是光合作用贮 2020-03-30 …
这句话的‘正是’是什么意思?“成功并不容易得到,‘正是’很多次失败的经验孕育了成功.” 2020-04-27 …
另据两个例子填入下面的空格内,构成前后呼应的排比句庄子是先秦乃至传统中国的最伟大的批判者,正是他的 2020-05-13 …
邂逅霍金文中画线语句描述了初见霍金的情景、这样的描述对表现人物有什么作用?画线句子是:忽然我见到前 2020-05-14 …
读书是一种提升自我的艺术.“玉不琢不成器,”读书是一种学习的过程.一本书有一个故事,一个故事叙述一 2020-05-14 …
为什么胡适写的我的母亲要写前三段总的来说,作者在前三段想表明,他的童年生活,除了看书之外,是贫乏的 2020-05-16 …
she said,i mean he said .是不是:她说,他说的正是我的意思. 2020-05-17 …
对苏格拉底进行审判的就是从雅典街头用豆子抓阄的办法拼凑的501人组成的民众法庭,最后判处了他死刑。 2020-05-17 …
通判的通是什么意思 2020-06-07 …
中国梦,我的梦一个人可以一无所有,但是不能没有梦想.”这句话,我一直记得.是的,正是因为有梦中国梦 2020-06-27 …