1. 程式人生 > 其它 >leetcode-75. 顏色分類

leetcode-75. 顏色分類

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; } };