颜色分类
此博客链接:
颜色分类
题目链接:https://leetcode-cn.com/problems/sort-colors/submissions/
题目
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
示例 1:
输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
示例 2:
输入:nums = [2,0,1]
输出:[0,1,2]
示例 3:
输入:nums = [0]
输出:[0]
示例 4:
输入:nums = [1]
输出:[1]
题解
使用双指针,当判断左指针为0时,左指针不移动,当判断右指针为2时,不移动,当判断左指针为2,右指针为0时,交换左右指针的内容,
代码
class Solution { public void sortColors(int[] nums) { if(nums.length<2) { return; } int left=0; int right=nums.length-1; for(int i=0;i<nums.length;i++) { if(nums[left]==2&&nums[right]==0) { int temp=nums[left]; nums[left]=nums[right]; nums[right]=temp; left++; right--; } if(nums[left]==0) { left++; } if(nums[right]==2){ right--; } if(nums[left]==2&&nums[right]==1) { int temp=nums[left]; nums[left]=nums[right]; nums[right]=temp; right--; } if(nums[left]==1&&nums[right]==0) { int temp=nums[left]; nums[left]=nums[right]; nums[right]=temp; left++; } } } }
结果
截图中代码说越界,我感觉没有越界,也不知道哪里越界了
出来混总是要还的