更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。
组队打卡,更多解法等你一起来参与哦!
LeetCode 75. 颜色分类,难度中等。
双指针
解题思路:定义 left
用于交换 0
,定义 right
用于交换 2
。
- 当
curr
为0
的时候,和left
交换,自增1
; - 当
curr
为2
的时候,和right
交换,自增1
; - 当
curr
为1
的时候自增1
class Solution {
public void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
public void sortColors(int[] nums) {
int left = 0, curr = 0, right = nums.length - 1;
while (curr <= right) {
if (nums[curr] == 0) {
swap(nums, left, curr);
left++;
curr++;
} else if (nums[curr] == 2) {
swap(nums, right, curr);
right--;
} else {
curr++;
}
}
}
}