1. 程式人生 > >Leetcode---顏色分類--計數排序

Leetcode---顏色分類--計數排序

顏色分類

題目連結:顏色分類

思路:
  • 本題利用計數排序非常簡單,僅需要定義一個長度為3的一維陣列
  • 利用陣列儲存每一種顏色出現的數量,再通過該陣列對原陣列進行重排
  • 重排時僅需要將定義的陣列的下標賦值給原陣列即可
  • 本題下面給出的進階要求沒有讀明白:你能想出一個僅使用常數空間的一趟掃描演算法嗎?難道3種顏色不算是常數空間的陣列嗎?有大神路過還請賜教
public void sortColors(int[] nums) {
        //計數排序
		int[] color = new int[3];
		for(int num:nums)
{ color[num]++; //將顏色疊加 } int k=0; for(int j=0;j<3;j++) { while(color[j]--!=0) { nums[k++]=j; } } }