题目描述:
思路:
题目可以理解为:给定一个只包含元素0,1,2的乱序数组arr,对其进行正序排序
实现:
class Solution {
public void sortColors(int[] nums) {
int[] arr = new int[3];
for (int i = 0; i < nums.length; i++) {
arr[nums[i]]++;
}
for (int j = 0, i = 0; i < 3;) {
if (arr[i] > 0) {
nums[j++] = i;
arr[i]--;
} else {
i++;
}
}
}
}
实现:
class Solution {
public void sortColors(int[] nums) {
int i = 0, a = 0, b = nums.length - 1;
while (i <= b) {
if (nums[i] == 0) {
if (i == a) {
i++;
a++;
} else {
int temp = nums[a];
nums[a++] = nums[i];
nums[i] = temp;
}
} else if (nums[i] == 2) {
int temp = nums[b];
nums[b--] = nums[i];
nums[i] = temp;
} else {
i++;
}
}
}
}
越努力,越幸运