2016年408数据结构真题
本文最后更新于 8 天前。

第43题:满分15分

要求$|n1 – n2|$绝对值最小,其实就是对于n为偶数,划分成两个一样大的数组,对于n为奇数划分为两个大小相差1的数组。划分成的两个数组还要保证数组之和的差的绝对值最大,如果说差的绝对值最小的话,划分起来还有些难度,但是如果要最大的绝对值,只需要把大数都划分到同一个数组,把剩余的小数都划分到另一个数组就可以。

方法一:排序

先把数组从小到大排序,那么前$\lfloor n/2 \rfloor$个元素放到第一个数组里,后面元素放到第二个数组里即可。时间和空间复杂度取决于所用排序算法

方法二:快速选择

我们需要前$\lfloor n/2 \rfloor$小的元素,放到第一个数组中,所以可以使用快速选择得到Topk小的所有元素,但这样不能直接存到原数组中,否则空间复杂度会提高为$O(n)$。不过可以用快速排序求出原数组的中位数,再直接在原数组里划分,这样空间复杂度是$O(logn)$

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇