码迷,mamicode.com
首页 > 其他好文 > 详细

75. Sort Colors

时间:2018-09-22 12:57:04      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:遍历数组   指针   图片   rtc   div   .com   alt   nbsp   info   

一、题目

  1、审题

  技术分享图片

  2、分析

    荷兰国旗问题。用 0,1,2 代表颜色,将数组中的所有的 0 排在前面, 1 排在中间,2排在后面。

 

二、解答

  1、思路:

    ①、选用三个指针。 left 与 current 指向下标为 0 的元素; right 指向数组末尾。

    ②、遍历数组,当 current <= right 时:

      当 current 指向元素为 0 时,交换 left、current 的值,同时 left++,current++;

      当 current 指向元素为 1 时,current++;

      当current 指向元素为 2 时,交换 current、right 值,同时 right--

public void sortColors2(int[] nums) {
        
        int len = nums.length;
        if(len < 2)
            return;
        
        int left = 0;
        int right = len - 1;
        int current = 0;
        while(current <= right) {
            if(nums[current] == 0){
                swap(nums, left, current);
                left++;
                current++;
            }
            else if(nums[current] == 1) {
                current++;
            }
            else {
                swap(nums, right, current);
                right--;
            }
        }
    }

 

75. Sort Colors

标签:遍历数组   指针   图片   rtc   div   .com   alt   nbsp   info   

原文地址:https://www.cnblogs.com/skillking/p/9689501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!