1. 程式人生 > 實用技巧 >【Docker】Dockerfile 之 RUN

【Docker】Dockerfile 之 RUN

題目

給定一個包含紅色、白色和藍色,一共 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]

提示:

n == nums.length 1 <= n <= 300 nums[i] 為 0、1 或 2

程式碼

//go
// 理解了思想程式碼應該不難實現,但是要注意一些細節

func sortColors(nums []int)  {
 n := len(nums)
 i, s, e := 0, 0, n // 因為 e 設定為了 n
 for i < e { // 所以 i<e
  if nums[i] == 0 {
   nums[i], nums[s] = nums[s], nums[i]
   s++
   i++
  }else if nums[i] == 1 {
   i++
  }else {
   e-- // e為n,防止下標越界,這裡要先減,在交換
   nums[i], nums[e] = nums[e], nums[i]
  }
 }
}

  地址:https://mp.weixin.qq.com/s/-7LVMrG8cbN4Su3hn-62tw