早教吧作业答案频道 -->其他-->
已知有序数列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所有的整数都是正数B正整数和负整数统称为整数C分数一定是有理数下列判断正确的 2020-06-06 …
这道会计题应该选什么,多选下列各项关于8090.70的中文大写的写法中,正确的有()A、人民币捌仟 2020-06-21 …
下列关于¥30010.06的大写写法的表述中,正确的是()。A.人民币三万零十元六分B.人民币三万 2020-06-21 …
3000.03的中文大写的写法,谁能告诉我,我正迷茫中.下列关于1000.03的中文大写的写法中, 2020-07-23 …
试求同时满足下列三个条件的三元有序整数组(a,b,c)的个数.①b^2-ac=0,且a,b,c都不 2020-07-29 …
1.在一个长度为10的一维有序整数X中插入一个元素.设数组元素初始值只有9个,插入后数组各元素仍然 2020-08-03 …
,当天就要用妈妈把2万元存入银行,整存整取5年,年利率是百分之5.85,利息税是百分之5.1到期后妈 2020-11-03 …
国庆放假两位老师带6个学生去迪士尼游玩,若单独购票:老师票价每人a元,学生每人b元(1)列整式表示总 2020-11-08 …
下列有关晶胞的说法中,不正确的是()A.晶胞是描述晶体结构的基本单元B.整块晶体中,相邻晶胞之间没有 2020-12-15 …
天津市从2016年7月1日起对全市最低工资标准进行调整。最低工资标准由每月1850元、每小时10.6 2021-01-16 …