iNNiNr
r
forj0jNjr
r
i
tt0r
foriaiibjibNNiaibNr
r
taiabibr
r
resultijtr
r
r
r
r
r
r
11找到单向链表中间那个元素,如果有两个则取前面一个。r
r
i
cludestddefhr
r
structlisttyper
r
i
tdatar
structlisttype
extr
r
r
typedefstructlisttypelistr
r
Fi
dthemiddleeleme
tofthesi
glyli
kedlistsllr
listfi
d_middlelistsllr
r
listslowsllr
listfastsllr
r
ifNULLfastr
r
retur
NULLr
r
r
while1r
r
ifNULLfast
extNULLfast
ext
extr
r
retur
slowr
r
r
slowslow
extr
fastfast
ext
extr
r
Preve
tthatthereisaloopi
theli
kedlistr
iffastslowr
r
retur
NULLr
r
r
r
r
r
r
12长度为N的整数数组,找出其中任意N1个乘积最大的那一组,只能用乘法,不可以用除法。要求对算法的时间复杂度和空间复杂度作出分析,不要求写程序。r
r
令这N个数的乘积为P,r
1如果P0,则剔除其中最大的负整数即可;r
2如果P0,r
21若这N个数中有且仅有一个为“0”。若其他数之积为正,则剔除“0”;否则剔除任意一个非零数;r
22若这N个数中至少有两个为“0”,则随便剔除一个数均可;r
3如果P0,如果有正数,则剔除其中最小的正整数即可;否则,剔除最小的负整数。r
r
时间复杂度:遍历数组,获得正整数个数cp,负整数个数c
,0的个数cz,需要ON时间;找被剔除的数最坏情况下需要ON时间。输出结果需要ON时间。因此,时间复杂度为ON。r
r
空间复杂度:数组存储需要ON空间,cpc
cz和被剔除的数的下标各需要O1空间。因此,空间复杂度为ON。r
r
r
r