leetcode-75. 顏色分類
阿新 • • 發佈:2021-08-12
class Solution { public: void sortColors(vector<int>& nums) { int i = 0; int j = nums.size()-1; int left = 0; int right = nums.size()-1; // 遍for迴圈,第一遍 移動0; while(i<=nums.size()-1){ if(nums[i]==0){ int temp = nums[i]; nums[i]= nums[left]; nums[left] = temp; left++; } i++; } // 第二遍移動2; while(j>=0){ if(nums[j]==2){ int temp = nums[j]; nums[j] = nums[right]; nums[right] = temp; left++; right--; } j--; } return; } };
只需一次遍歷
class Solution { public: void sortColors(vector<int>& nums) { int left = 0; // 令左指標左邊的數都為1 int right = nums.size()-1; // 令右指標右邊的數都為2 int i = 0; // i進行遍歷,// 遍for迴圈,第一遍 移動0; while(i<=right){ if(nums[i]==0){ int temp = nums[i]; nums[i] = nums[left]; nums[left] = temp; left++; i++; }else if(nums[i]==2){ int temp = nums[i]; nums[i] = nums[right]; nums[right] = temp; right--; // 不執行i++,因為還需要判斷交換後的值 }else{ i++; } } return; } };