首页 > 其他 > 详细

LintCode "Sort Colors II"

时间:2015-09-20 16:05:11      阅读:219      评论:0      收藏:0      [点我收藏+]

A variation to Sort Colors I - we take care of 2 sides, recursively\iteratively.

class Solution{
public:
    /**
     * @param colors: A list of integer
     * @param k: An integer
     * @return: nothing
     */
    void _sort(vector<int> &colors, int s, int e, int sk, int se)
    {
        if (s >= e) return;

        int i = s, j = e;
        while(i < j)
        {
            int k = i;
            while(k <= j)
            {
                if(colors[k] == sk)
                {
                    swap(colors[i++], colors[k]);
                    k = i;
                }
                else if(colors[k] == se)
                {
                    swap(colors[j--], colors[k]);
                }
                else
                    k ++;
            }
            sk ++; se--;
        }
    }
    void sortColors2(vector<int> &colors, int k) {
        _sort(colors, 0, colors.size() - 1, 1, k);
    }
};

LintCode "Sort Colors II"

原文:http://www.cnblogs.com/tonix/p/4823595.html

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