力扣颜色分类
給定一個(gè)包含紅色、白色和藍(lán)色,一共 n 個(gè)元素的數(shù)組,原地對(duì)它們進(jìn)行排序,使得相同顏色的元素相鄰,并按照紅色、白色、藍(lán)色順序排列。
此題中,我們使用整數(shù) 0、 1 和 2 分別表示紅色、白色和藍(lán)色。
思路:將紅色和藍(lán)色排在兩邊,中間剩的就是白色了;另一種是遍歷一遍數(shù)組,統(tǒng)計(jì)各種顏色數(shù)量后輸出,但是沒(méi)有前者快
class Solution {public void sortColors(int[] nums) {int red = 0;int blue = nums.length - 1;for(int i = 0;i<blue+1;i++){if(nums[i] == 0){nums[red++] = 0;}//將藍(lán)色部分要置換到前面來(lái),不能像紅色那樣直接覆蓋,因?yàn)檫€沒(méi)有遍歷else if(nums[i] == 2){int temp = nums[i];nums[i] = nums[blue];nums[blue--] = temp;i--;}}for(int white = red;white<=blue;white++)//把中間設(shè)為白色nums[white] = 1;} }總結(jié)
- 上一篇: 力扣删除排序数组中的重复项 II
- 下一篇: 颐和园环湖游船多少钱