【Docker】Dockerfile 之 RUN
阿新 • • 發佈:2020-11-29
題目
給定一個包含紅色、白色和藍色,一共 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