leetcode 第75题 颜色分类

    技术2026-03-10  17

    自己做出来的一道题,很简单,一次遍历,三个指针,其实是两指针吧。

    给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

    此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-colors 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution { public void sortColors(int[] nums) { if(nums.length == 0){return ;} int i = 0 , j = nums.length - 1 ; int m = 0 ; int temp = 0 ; while( i < j && m <= j ){//分三种情况 if(nums[m]==0){ temp = nums[m] ; nums[m] = nums[i]; nums[i] = temp ; i ++ ; m ++ ; continue ; }else if(nums[m]==2 ){ temp = nums[m] ; nums[m] = nums[j]; nums[j] = temp ; j -- ; if(nums[m ] == 1){ m ++ ; } }else{ m ++ ; } } } }

    也叫荷兰国旗问题。 时间复杂度:O(n) 空间复杂度:O(1)

    Processed: 0.008, SQL: 9