Redian新闻
>
问一道车辆归位的算法题
avatar
问一道车辆归位的算法题# JobHunting - 待字闺中
m*n
1
有一个停车场,车位都是事先分配好的,每辆车都应该按编号停车。但是目前停车场所
停车辆并没用按编号停车,而且只有一个空位,请问如何利用这一个空位把所有车辆归
位。
感觉有点象华容道问题,求解,谢谢!
avatar
l*8
2
constant space, in-place sort
use quick sort.

【在 m******n 的大作中提到】
: 有一个停车场,车位都是事先分配好的,每辆车都应该按编号停车。但是目前停车场所
: 停车辆并没用按编号停车,而且只有一个空位,请问如何利用这一个空位把所有车辆归
: 位。
: 感觉有点象华容道问题,求解,谢谢!

avatar
l*h
3
一针见血。

【在 l*********8 的大作中提到】
: constant space, in-place sort
: use quick sort.

avatar
m*n
4
谢谢!
avatar
K*g
5
面试的时候碰到这道题,答得不好,面试官提示了。
这里车位和车都是对应的,只要是空车位,可以把车移到正确的车位上,
而不需要跟其他车去比较,因此用常见的排序无法得出最优方案。
更好的方案如下:
因为有一个空位,所以必然有个车位是没有对应的车的。先将其选出作为特殊车位,
如果该车位有车,移开。
按车位顺序查看停的车是否配对,若不配对将车放在特殊空位,把配对的车移在空出
来的车位,再给新空出来的车位配对,循环至空位变成特殊车位。之后从刚开始不配对
的车位往后继续查看配对,直至所有车位配对。复杂度O(n),这里只考虑移车的开销。
举个例子,车位编号1-5, 车编号1-4,起始状态
按车位顺序:
2, 3, 1, 4, 空
则移动如下
空, 3, 1, 4, 2
1, 3, 空,4, 2
1, 空, 3, 4, 2
1, 2, 3, 4, 空
结束

【在 m******n 的大作中提到】
: 有一个停车场,车位都是事先分配好的,每辆车都应该按编号停车。但是目前停车场所
: 停车辆并没用按编号停车,而且只有一个空位,请问如何利用这一个空位把所有车辆归
: 位。
: 感觉有点象华容道问题,求解,谢谢!

avatar
m*n
6
赞!

【在 K*******g 的大作中提到】
: 面试的时候碰到这道题,答得不好,面试官提示了。
: 这里车位和车都是对应的,只要是空车位,可以把车移到正确的车位上,
: 而不需要跟其他车去比较,因此用常见的排序无法得出最优方案。
: 更好的方案如下:
: 因为有一个空位,所以必然有个车位是没有对应的车的。先将其选出作为特殊车位,
: 如果该车位有车,移开。
: 按车位顺序查看停的车是否配对,若不配对将车放在特殊空位,把配对的车移在空出
: 来的车位,再给新空出来的车位配对,循环至空位变成特殊车位。之后从刚开始不配对
: 的车位往后继续查看配对,直至所有车位配对。复杂度O(n),这里只考虑移车的开销。
: 举个例子,车位编号1-5, 车编号1-4,起始状态

avatar
f*r
7
感谢很棒的答案,
不过在给新空出来的车位配对的时候,感觉需要从前往后寻找对应的车,这个貌似本身
需要O(N)复杂度,那么总体的复杂度似乎没法保证是O(N)?
请赐教!

【在 K*******g 的大作中提到】
: 面试的时候碰到这道题,答得不好,面试官提示了。
: 这里车位和车都是对应的,只要是空车位,可以把车移到正确的车位上,
: 而不需要跟其他车去比较,因此用常见的排序无法得出最优方案。
: 更好的方案如下:
: 因为有一个空位,所以必然有个车位是没有对应的车的。先将其选出作为特殊车位,
: 如果该车位有车,移开。
: 按车位顺序查看停的车是否配对,若不配对将车放在特殊空位,把配对的车移在空出
: 来的车位,再给新空出来的车位配对,循环至空位变成特殊车位。之后从刚开始不配对
: 的车位往后继续查看配对,直至所有车位配对。复杂度O(n),这里只考虑移车的开销。
: 举个例子,车位编号1-5, 车编号1-4,起始状态

avatar
K*g
8
建个table存一下位置就可以了,查询O(1)而已

【在 f*******r 的大作中提到】
: 感谢很棒的答案,
: 不过在给新空出来的车位配对的时候,感觉需要从前往后寻找对应的车,这个貌似本身
: 需要O(N)复杂度,那么总体的复杂度似乎没法保证是O(N)?
: 请赐教!

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。