早教吧作业答案频道 -->其他-->
已知有序数列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]和...的网友还看了以下:
高中数学,有题有答案,对答案有疑问已知a是实数,函数f(x)=2ax^2+2x-3-a,如果函数y= 2020-03-30 …
已知1/3≤a≤1,若函数f(x)=ax^2-2x在区间[1,3]上的最大值为M(a),最小值为N 2020-04-06 …
某厂共有三个车间.某厂共有三个车间,一号车间有工人A人,二号车间人数比一号车间人数的2倍少一人,三 2020-04-09 …
高中函数题,求解若函数f(x)=2 cos^2 x+根号3sin2x+a(a属于R)若函数f(x) 2020-05-13 …
数字签名可以解决()A.数据被泄露B.数据被篡改C.未经授权擅自访问D.冒名发送数据或发送后抵赖 2020-05-26 …
来源于网上,请诸位帮我看看有没有漏解题条件,或解题条件错误?1、甲车间人数比丙车间人数少,而丙车间 2020-07-16 …
求大家帮忙解决啊数学题很急函数f(x)=2^x-2/x-a的一个零点在区间(1,2)内,则实数a的 2020-07-31 …
关于介值定理、最值定理的理解1、介值定理:设函数y=f(x)在闭区间[a,b]上连续,则在这区间必 2020-08-01 …
1.1-2cos2(这个2为平方)x-sinx+a=0有实数解求实数a的范围(求详解)2.(2si 2020-08-01 …
单调函数在定义域一定连续么好比函数f(x)在区间(A,B)为单调函数,且f(A)f(B)<0则f( 2020-08-02 …