Tony's Log

Algorithms, Distributed System, Machine Learning

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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);
    }
};
复制代码
posted on   Tonix  阅读(148)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示