早教吧作业答案频道 -->其他-->
已知有序数列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]和...的网友还看了以下:
我要问一个数列问题6.在公差不为零的等差数列{An}及等比数列{Bn}中,A1=1,A1=B1,A2 2020-03-30 …
在数组中查找指定元素.输入一个正整数n(1≤n ≤10),然后输入n个整数存入数组a中,再输入一个 2020-05-14 …
是否存在正整数m,使(a+b)的4m-1次方能被(a+b)2m+7次方整除?若存在,求m的值,若不 2020-05-15 …
一道数学题,我不明白>-设a表示一个两位数,b表示一个三位数,把a放在b的左边,组成一个五位数x, 2020-05-16 …
是否存在一个正整数n,满足n能被2000个不同质数整除,并且2^n+1能被n整除如题,一道美国数学 2020-05-17 …
编写一个程序,给定一个正整数,判断它是否为素数,并输出判断结果.(要求:以面向对象程序设计的基本思 2020-05-17 …
关于简单C语言的练习输入一个正整数表示一个星期中的某一天,若此数字在[1,7]内,则输出对应英文星 2020-05-17 …
检查堤脚时,重点察看堤脚附近地面是否( )、堤坡是否平顺、有无陡坎。A.平整B.水平C.宽阔D.光滑 2020-05-27 …
设an=1+1/2+1/3+.1/n,是否存在关于n的正式g(n),使得等式a1+a2+a3+.a 2020-06-12 …
下列现象中不属于利用光沿直线传播的是()A.树荫下的“光斑”B.射击瞄准要“三点一线”C.排队就餐 2020-07-05 …