首页 > 其他 > 详细

荷兰国旗问题

时间:2020-02-10 16:35:35      阅读:54      评论:0      收藏:0      [点我收藏+]

题目一

技术分享图片

解题思路

给定一个num,一个指针x,初始指向-1位置,0~x之间的数都是小于等于num的。cur是当前数所在位置。

依次遍历数组,如果大于num,cur走到下一个数,如果小于等于num,将当前数与x的下一个位置上的数交换,x走到下一个位置,cur走到下一个位置。

······以此类推,直到遍历完所有的数。

 题目二(荷兰国旗问题)

技术分享图片

解题思路

给定一个num,一个指针less,初始指向-1位置,0~x之间的数都是小于num的。一个指针more,初始指向N位置,more~N-1之间的数都是大于num的。cur代表当前数所在位置。

依次遍历数组,如果等于num,cur直接走到下一个数;如果小于num,将当前数与less的下一个位置上的数交换,less走到下一个位置,cur走到下一个位置;

如果大于num,将当前数与more的上一个位置上的数交换,more走到上一个位置,cur不动继续考察。

······以此类推,直到cur与more相遇。

技术分享图片

技术分享图片

 代码实现

https://github.com/superjishere/algorithm/blob/master/zuo/%E5%88%9D%E7%BA%A7/01/Code_08_NetherlandsFlag.java

技术分享图片

 

荷兰国旗问题

原文:https://www.cnblogs.com/superjishere/p/12291292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!