timeshark的专栏

猫头鹰是我的好朋友~

75. Sort Colors

Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.

Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.

Note:
You are not suppose to use the library's sort function for this problem.

题意:数组中含有0,1,2。把数组所有的2放一块儿,所有的1放一块儿,所有的0放一块儿。

思路:类似于快排的思想,开辟存放0的空间,不断增加。也开辟存放2的空间,不断移动指针。中间放1.

class Solution {
public:
	void sortColors(vector<int>& nums) {
		int i = -1;
		int j = nums.size();
		for (int k = 0; k < j; k++){
			if (nums[k] == 0){
				i++;
				swap(nums[i], nums[k]);
			}
			else if (nums[k] == 2){
				j--;
				swap(nums[j], nums[k]);
				k--;
			}
			else{
				//do nothing
			}
		}
	}
};

二刷:

思路同上

class Solution {
public:
	void sortColors(vector<int>& nums) {
		int i = -1, j = nums.size();
		int k = 0;
		while (k < j){
			switch (nums[k]){
			case 0:
				i++;
				swap(nums[i], nums[k]);
				break;
			case 1:
				break;
			case 2:
				j--;
				swap(nums[k], nums[j]);
				break;
			}
			k++;
		}
		return;
	}
};









阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/x_shuck/article/details/51546069
文章标签: c++
个人分类: leetcode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

75. Sort Colors

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭