早教吧作业答案频道 -->数学-->
如何在O(n)时间内,对0到n的平方减一的n个整数排列
题目详情
如何在O(n)时间内,对0到n的平方减一的n个整数排列
▼优质解答
答案和解析
你指的是,将n个数按顺序排列,其中这n个数的范围在0到n的平方减一内吗?
如果是这样,你首先将每个数num化成num= u^2+v的形式(num开方取整求出u,然后v= num-u^2)
然后按照u的不同,将n个数分到n个数组(也可能少于n个数组).容易知道,u越小,num就越小.所以这里已经把num按u的大小排好了,接着只要对每个数组内部进行排序就行.
也就是在每个数组内,例如每个数组内有i个数,按照v的不同,将i个数分到i个数组,那么v越小,num越小.这样就得出答案了
我这里的数组应该说是链表才对,这样才能做到O(n)时间.
我再重述一下算法的核心思想:首先u越小,num就越小.u相同情况下,v越小,num就越小.
如果是这样,你首先将每个数num化成num= u^2+v的形式(num开方取整求出u,然后v= num-u^2)
然后按照u的不同,将n个数分到n个数组(也可能少于n个数组).容易知道,u越小,num就越小.所以这里已经把num按u的大小排好了,接着只要对每个数组内部进行排序就行.
也就是在每个数组内,例如每个数组内有i个数,按照v的不同,将i个数分到i个数组,那么v越小,num越小.这样就得出答案了
我这里的数组应该说是链表才对,这样才能做到O(n)时间.
我再重述一下算法的核心思想:首先u越小,num就越小.u相同情况下,v越小,num就越小.
看了 如何在O(n)时间内,对0到...的网友还看了以下:
同学聚会,约定在中午12点到会,早到记为正,迟到记为负,结果最早到的同学记为+3点,最迟到的同学记 2020-04-07 …
一班开班会约在下午2点到会,早到的记为正,迟到的记为负,结果最早到的同学记为+3点,最迟到的同学记 2020-04-07 …
如图所示,同一潜水艇浮在水面时受到的浮力为F1,底部受到水的压强为P1,潜人水中时受到浮力为F2, 2020-05-16 …
如图甲所示,弹簧测力计示数为5N.如图乙所示,小球一半浸在水中,测力计示数为2N;(g=10N/k 2020-05-16 …
在水平路面上有一辆小车,质量为500㎏,运动时受到的阻力是车重的0.05倍.问:1.当用200N的 2020-05-16 …
至今,人类在航海时遇到的奇异现象有哪些?人们在航海中一定会遇到各种有趣的事.常听说或看到传说航海时 2020-05-16 …
小明妻摩托车在公路上匀速行驶,下面就是小明每隔1小时看到的里程情况,问小明12:00看到的里程牌上 2020-05-21 …
小明的爸爸骑着摩托车带着小明在公路上匀速行驶,12点时,小明看到路边里程牌的数是一个两位数,两数字 2020-05-21 …
人骑划板在地面滑动时受到的平均阻力大小人骑划板地面滑动时受到的平均阻力大小!需要知道那些物理量?用 2020-05-24 …
体育课有爬绳和爬杆两种运动,某同学先后以相同的姿势顺着绳和杆向上爬升,则()A时受到的摩擦力较大, 2020-06-03 …