Problem: 75. 颜色分类
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
由于题目只提供0,1,2分别代表颜色红、白、蓝,并按此排序,那么我们可以遍历两次数组,第一次将0,全部放到数组前面一部分,第二次将1全部放到0的后面(这些操作均可以通过交换数组中的元素实现)
复杂度
时间复杂度:
O ( n ) O(n) O(n);其中 n n n为数组的大小
空间复杂度:
O ( n ) O(n) O(n)
Code
class Solution {
/**
* Sort Colors
*
* @param nums Given array
*/
public void sortColors(int[] nums) {
int index = 0;
for (int i = 0; i < nums.length; ++i) {
if (nums[i] == 0) {
int temp = nums[i];
nums[i] = nums[index];
nums[index++] = temp;
}
}
for (int i = index; i < nums.length; ++i) {
if (nums[i] == 1) {
int temp = nums[i];
nums[i] = nums[index];
nums[index++] = temp;
}
}
}
}