75. Sort Colors

来源:互联网 发布:安卓解压软件 编辑:程序博客网 时间:2024/06/14 11:21

left指向存放0的位置 middle指向正在扫描的元素 right 指向存放2的位置
当middle 指向1的跳过 指向 0时和left交换 指向2时和right交换
但是注意到middle>=left 所以left指向的元素为1 所以和middle交换后
直接left++ middle++  而right指向的元素不确定所以和middle交换后
right– 而middle却没有变 还要检查下middle位置的元素

class Solution {public:    void sortColors(vector<int>& nums) {        int left,right,middle;        left=0;        middle=0;        right=nums.size()-1;        while(middle<=right)        {            if(nums[middle]==0)            {                int temp=nums[middle];                nums[middle]=nums[left];                nums[left]=temp;                left++;                middle++;            }            else if(nums[middle]==2)            {                int temp=nums[middle];                nums[middle]=nums[right];                nums[right]=temp;                right--;            }else            {                middle++;            }        }    }};
0 0
原创粉丝点击