早教吧作业答案频道 -->其他-->
已知有序数列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]和...的网友还看了以下:
n个连续整数的乘积一定能被n!整除如题,可以证明一下么?....不是你们理解的那样比如说K为整数, 2020-05-17 …
M={x/n=xn属于整数},N={x/n=x+1,n属于整数},则M与N的交集为-,———22可 2020-05-17 …
1.知不等式ax^2+bx+a0)的解集是空集,则a^2+b^2-2b的取值范围?2.在数列{an 2020-05-20 …
1.对于任何有理数n,多项式(4n+5)^2-9能被...A被8整除B被n整除C被2n+7整除D被 2020-06-11 …
求教数学题一道如果n是一个大于6的整数,那下面哪一个一定能被3整除?A.N*(N+5)(N-6)B 2020-06-12 …
数论题目n²+n+3=2的k次方求所有整数解n²+n+3=2的k次方求所有整数解要过程谢谢了 2020-06-14 …
仿照下面的方法探索并解决下列问题:(1)当a,b,m,n均为正整数时,若a+b3=(m+n3)2, 2020-06-24 …
n个连续整数的乘积一定能被n!整除如题,可以证明一下么?....不是你们理解的那样比如说K为整数, 2020-06-27 …
若m+n=7,mn=12,则m^2-mn+n^2的值是.若m,n为整数,下列各式错误的是.A.a^m 2020-10-30 …
若m+n=7,mn=12,则m^2-mn+n^2的值是.若m,n为整数,下列各式错误的是.A.a^m 2020-10-30 …