早教吧作业答案频道 -->数学-->
如何在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到...的网友还看了以下:
怎样对MYSQL中的两列时间做减法?比如有两列数据.AB2002-08-1723:22:232002 2020-03-31 …
碰到下雨天,中小学生骑自行车上学时,以下哪一项最危险?A骑自行车的时候减速慢行B穿雨衣骑自行车C边 2020-04-25 …
急用某车间过去生产零件4000个要8小时,技术革新后需要的时间减少5小时,现在每小时的工作效率提高 2020-05-20 …
若磁盘的转速提高一倍,则( )。A.平均存取的时间减半B.平均寻道时间减半C.存储密度可以提高一倍D 2020-05-24 …
若磁盘的转速提高一倍,则( )。A.平均存取得的时间减半B.平均寻道时间减半C.存储密度可以提高一 2020-05-24 …
一辆汽车从甲地开往乙地,如果每小时行48千米,5小时可到达,现在汽车行驶的时间减少1/5,速度应家 2020-07-17 …
我国铁路第五次大面积提速,如果沪宁线列车时速由每小时120千米提高到每小时160千米,从上海到南京 2020-07-18 …
假设要算第三秒末的瞬时速度那么△t究竟怎么算?是与前面的时刻相减对应其路程算出还是用后面的时刻减第 2020-08-02 …
如何跳从楼上掉下来能减轻对身体的伤害?今天看新闻说有大楼失火,民工从4楼跳下来逃生,然后送往医院.从 2020-11-05 …
物理天平的左码右物问题为什么有的时候减一个游码质量,有时候减两个 2020-11-25 …