Leetcode75. 颜色分类(JAVA双指针)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode75. 颜色分类(JAVA双指针)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/sort-colors/
解题思路
这题其实是三指针,用p0记录当前遍历完的下一个要放0的下标,用p2记录当前遍历完的下一个要放2的下标,用i来遍历数组。
代码
class Solution {
public void sortColors(int[] nums) {
int p0 = 0; //指向0的位置
int p2 = nums.length - 1; //指向2的位置
for(int i = 0; i <= p2; i++) {
while(i <= p2 && nums[i] == 2) { //如果nums[i]==2,就移到最后的位置上去,因为不能确定nums[p2]的位置是不是2,所以要用while循环,保证最后都是2
int t = nums[i];
nums[i] = nums[p2];
nums[p2] = t;
p2--;
}
if(nums[i] == 0) { //如果是0,就和前面标记的p0这个位置交换
int t = nums[i];
nums[i] = nums[p0];
nums[p0] = t;
p0++;
}
}
}
}
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(1)
以上是关于Leetcode75. 颜色分类(JAVA双指针)的主要内容,如果未能解决你的问题,请参考以下文章