zoukankan      html  css  js  c++  java
  • [LeetCode OJ] Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.

    Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.

    Note:
    You are not suppose to use the library's sort function for this problem.

    click to show follow up.

    Follow up:
    A rather straight forward solution is a two-pass algorithm using counting sort.
    First, iterate the array counting number of 0's, 1's, and 2's, then overwrite array with total number of 0's, then 1's and followed by 2's.

    Could you come up with an one-pass algorithm using only constant space?

     
    代码: one-pass algorithm
     1 class Solution {
     2 public:
     3     void sortColors(int A[], int n) {
     4         int left=0, right=n;
     5         for(int i=0; i<right; i++)
     6         {
     7             if(A[i]==0)
     8             {
     9                 A[i] = 1;
    10                 A[left++] = 0;
    11             }
    12             else if(A[i]==2)
    13             {
    14                 --right;
    15                 int temp = A[right];
    16                 A[right] = 2;
    17                 A[i] = temp;
    18                 --i;
    19             }
    20         }
    21     }
    22 };
  • 相关阅读:
    spring boot 报错 Failed to read HTTP message
    spring boot 之 Mybatis 配置
    Java生成xlsx格式的excel文件
    遍历FTP目录及下载
    Spring 报错
    git ssh key生成
    spring mvc原理
    LightOJ 1154
    Light OJ 1153
    入栈出栈的顺序问题
  • 原文地址:https://www.cnblogs.com/Marrybe/p/3856361.html
Copyright © 2011-2022 走看看