题目:
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
示例 1:
输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
题解:
方法一:三次遍历...
package test;
import java.util.Arrays;
class Solution {
public void sortColors(int[] nums) {
int red = 0, white = 0, blue = 0;
// 找到红白蓝的个数
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 0) {
red++;
}
else if (nums[i] == 1) {
white++;
}
else if (nums[i] == 2) {
blue++;
}
}
// 三次遍历,往nums里面幅值
for (int i = 0; i < red; i++) {
nums[i] = 0;
}
for (int i = red; i < red + white; i++) {
nums[i] = 1;
}
for (int i = red + white; i < red + white + blue; i++) {
nums[i] = 2;
}
}
}
public class Main{
public static void main (String []args){
int[] nums = {2,0,2,1,1,0};
Solution p = new Solution();
p.sortColors(nums);
System.out.print(" " + Arrays.toString(nums));
}
}