LeetCode 75. Sort Colors

LeetCode 75. Sort Colors

链接: https://leetcode-cn.com/problems/sort-colors/

题目描述

给定一个包含 n 个颜色为红色、白色或蓝色对象的数组编号,对它们进行就地排序,以便相同颜色的对象相邻,颜色按红色、白色和蓝色的顺序排列。

用整数 0、1 和 2 分别表示红色、白色和蓝色。

思路

  1. 使用三个指针,redwhiteblue,分别指向红色、白色、蓝色。
  2. 初始化时,red指向第一个元素,white指向第一个元素,blue指向最后一个元素。
  3. 移动white指针,当white指向的元素为红色时,交换redwhite指向的元素,redwhite指针都向后移动一位;当white指向的元素为白色时,white指针向后移动一位;当white指向的元素为蓝色时,交换whiteblue指向的元素,blue指针向前移动一位。
  4. white指针大于blue指针时,结束循环。

代码

class Solution {
public:
    void sortColors(vector<int>& nums) {
        auto red = nums.begin(), white = nums.begin(), blue = nums.end() - 1;
        while (white <= blue) {
            if (*white == 1) white++;
            else if (*white == 0) swap(*white++, *red++);
            else swap(*white, *blue--);
        }    
   }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值