每日一题系列 - 荷兰国旗问题

『每日一题』

题目取自清华大学《数据结构》题集,严蔚敏,米宁, 吴伟民

 

荷兰国旗问题:(难度5)设有一个仅由红白蓝三种颜色的条块组成的条块序列。求一种时间复杂度O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗的图案。

 

分析:大意是比如{红,蓝,白,白,蓝,红,白,蓝,白} -->{红,红,蓝,蓝,蓝,白,白,白,白}的调整

不过该题目并未规定是否可以另辟存储空间。

 

有兴趣的试试看吧。

 

『题解』:

其实此题并不难,如果一开始没有思路,可以先降级考虑一下两色旗问题,相信可以很快用分别指向队头和队尾两个的指针平行移动来调整序列内元素,算法复杂度是O(n)。然后考虑多了一种颜色,就是加了一个指针而已,算法复杂度不受影响。

 

该实现不用另辟array空间。需要额外几个指针。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值