zoukankan      html  css  js  c++  java
  • [Algo] 11. Rainbow Sort

    Given an array of balls, where the color of the balls can only be Red, Green or Blue, sort the balls such that all the Red balls are grouped on the left side, all the Green balls are grouped in the middle and all the Blue balls are grouped on the right side. (Red is denoted by -1, Green is denoted by 0, and Blue is denoted by 1).

    Examples

    • {0} is sorted to {0}
    • {1, 0} is sorted to {0, 1}
    • {1, 0, 1, -1, 0} is sorted to {-1, 0, 0, 1, 1}

    Assumptions

    • The input array is not null.

    Corner Cases

    • What if the input array is of length zero? In this case, we should not do anything as well.
    public class Solution {
      public int[] rainbowSort(int[] array) {
        // Write your solution here
        if (array == null || array.length == 0) {
          return array;
        }
        int neg = 0;
        int pos = array.length - 1;
        int zero = 0;
        while (zero <= pos) {
            if (array[zero] == -1) {
              swap(array, zero++, neg++);
            } else if (array[zero] == 0) {
              zero++;
            } else {
              swap(array, zero, pos--);
            }
        }
        return array;
      }
    
      private void swap (int[] arr, int a, int b) {
          int tmp = arr[a];
          arr[a] = arr[b];
          arr[b] = tmp;
      }
    }
  • 相关阅读:
    Spring.Net初认识——竹子整理
    SOA:面向服务编程——竹子整理
    unity安装记录
    wcf第三方客户端与wcf服务之间调用入门
    Winform VS2015打包
    OWINS是什么(转载)
    [LR]遇到的坑及常用技巧
    性能测试简单调优
    es6解构赋值
    es6 笔记
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12406046.html
Copyright © 2011-2022 走看看