LeetCode-075-顏色分類

題目描述:給定一個(gè)包含紅色、白色和藍(lán)色,一共 n 個(gè)元素的數(shù)組,原地對(duì)它們進(jìn)行排序,使得相同顏色的元素相鄰,并按照紅色、白色、藍(lán)色順序排列。
此題中,我們使用整數(shù) 0、 1 和 2 分別表示紅色、白色和藍(lán)色。
來(lái)源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/sort-colors/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:遍歷數(shù)組
首先,聲明2個(gè)參數(shù),zeroIndex用來(lái)記錄從左開(kāi)始第一個(gè)不為紅色的位置,初始值為0,twoIndex用來(lái)記錄從右開(kāi)始第一個(gè)不為藍(lán)色的位置,初始值為
nums.length - 1
,然后遍歷數(shù)組,遍歷過(guò)程如下:
如果當(dāng)前的值等于2,則將當(dāng)前位置的值和twoIndex位置的值進(jìn)行交換,然后將twoIndex減一,然后進(jìn)行下一輪處理;
如果當(dāng)前的值等于1,則繼續(xù)判斷下一個(gè)數(shù)字;
如果當(dāng)前的值等于0,則將當(dāng)前位置的值和zeroIndex位置的值進(jìn)行交換,然后將zeroIndex加一,然后進(jìn)行下一輪處理。
遍歷結(jié)束的位置是twoIndex,因?yàn)閠woIndex可能會(huì)左移,也就是不用遍歷到數(shù)組的最后一位。
【每日寄語(yǔ)】 智者貴于乘時(shí),時(shí)不可失。