早教吧作业答案频道 -->其他-->
已知有序数列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 …
已知定义在R上的函数f(x)=2*+A/2*(a为常数)1.若函数是R上的奇函数.1.求a2,判断 2020-05-17 …
求解等差数列题一道判断对错:1.等差数列中若有两项是有理数则其余各项都是有理数2.等差数列中若有两 2020-06-14 …
为什么要判断i与(n-1)的大小关系?对于任意的整数n(n>2),若用i表示2~(n-1)中的任为 2020-07-10 …
设在区间上有定义若都有则称是区间的向上凸函数;若都有则称是区间的向下凸函数.有下列四个判断:①若是 2020-07-29 …
利用函数图象判断方程x平方-x-3=0有没有实数解利用函数图象判断方程x²-x-3=0有没有实数解 2020-08-02 …
计算机产生一个1-1000之间的随机整数,用户输入一个正整数,判断是否与计算机产生的相同,若猜中,输 2020-10-30 …
用来判断整数d是否为素数:intPrime(intd);而后编制主函数,任意输入一个数d,判断其是否 2020-11-17 …
怎么利用VisualC++解决偶数问题由键盘上输入1个正整数n。请用分支语句判断其是奇数还是偶数,若 2020-11-26 …
现在设质数为n,一个数为i,余数为r.先用i除n,得到余数r.判断r是否为0.若为0,则n不为0,则 2021-02-13 …