1. 程式人生 > 實用技巧 >b_lc_可達的最遠建築(pq+貪心實現延遲思想)

b_lc_可達的最遠建築(pq+貪心實現延遲思想)

class Solution {
    public void sortColors(int[] nums) {
        // [0,zero) = 0 ; [zero,i) = 1; [two,nums.length - 1] = 2
        //保證迴圈開始時[0,zero)為空,所以設定zero 為 -1,遍歷時先加,後交換
        int zero = -1;
        //未來保證初始化時[two,nums.length - 1] 為空,將two 設定為nums.length,遍歷時先減,再交換
        int two = nums.length;
        
int i = 0; //當i = two 時,上面的三個子區間正好覆蓋全部陣列,因此迴圈可以繼續的條件是 i < two; while(i < two){ if(nums[i] == 0){ zero++; swap(nums,i,zero); i++; }else if(nums[i] == 1){ i++; }else{ two
--; swap(nums,i,two); } } } public void swap(int[] nums,int index1,int index2){ int tmp = nums[index1]; nums[index1] = nums[index2]; nums[index2] = tmp; } }