每天一算 Sort Colors

2021-09-11 11:37:53 字數 1018 閱讀 7059

leetcode上第75號問題:sort colors

給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。

此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。

注意: 不能使用**庫中的排序函式來解決這道題。

示例:

輸入: [2,0,2,1,1,0]

輸出: [0,0,1,1,2,2]

思路

結合三路快排partition思路的應用,設定兩個索引,乙個從左往右滑動zero,乙個從右往左滑動two,遍歷nums,當nums[i]的值為1時,i++;當nums[i]的值為2時,two的值先減1,而後交換nums[i]nums[two],此時在觀察nums[i]的值;當nums[i]的值為0時,zero++,而後交換nums[i]nums[zero]i++;當i = two時,結束迴圈。

動畫演示

**

// 三路快速排序的思想

// 對整個陣列只遍歷了一遍

// 時間複雜度: o(n)

// 空間複雜度: o(1)

class solution else

if (nums[i] == 2)else}}

};複製**

歡迎關注

每天一算 Two Sum II

leetcode上第75號問題 two sum ii 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 示例 輸入 numbers 2,7,11,15 target ...

每天一算 Move Zeros

leetcode上第283號問題 move zeros 給定乙個陣列nums,寫乙個函式,將陣列中所有的0挪到陣列的末尾,維持其他所有非0元素的相對位置。舉例 nums 0,1,0,3,12 函式運 後結果為 1,3,12,0,0 思路 建立乙個臨時陣列nonzeroelements,遍歷nums,...

每天一演算法(生命遊戲)

說明 生命遊戲 game of life 為1970年由英國數學家j.h.conway所提出,某一細胞的鄰居包括上 下 左 右 左上 左下 右上與右下相鄰之細胞,遊戲規則如下 復活 如果某位置原無細胞存活,而該位置的鄰居為三個,則該位置將復活一細胞。解法 生命遊戲的規則可簡化為以下,並使用case比...