【LeetCode-面试算法经典-Java实现】【075-Sort Colors (颜色排序)】

【075-Sort Colors (颜色排序)】


【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

原题

  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.

题目大意

  给定一个对象数组,对象是红色,白色和蓝色,对颜色进行排序,红,白,蓝。

  使用0,1,2分别代表红,白,蓝。

  注意:不能使用库函数进行排序。

解题思路

  对数组进行扫描,计录1的个数和整个数组的和。扫描完后可以得出1的数目t,2的数目(sum-t)/2,最后可以得出0的数目,这样子根据0,1,2的数目再对数组进行设置值。

代码实现

算法实现类

public class Solution {
    public void sortColors(int[] A) {

        if (A == null) {
            return;
        }

        int count = 0; // 统计1的个数
        int sum = 0; // 统计数组的和

        for (int i : A) {
            if (i == 1) {
                count++;
            }

            sum += i;
        }

        sum = (sum - count) /2; // 计算2的数目

        count = A.length - count - sum; // 1开始出现的位置

        sum = A.length - sum; // 2开始出现的位置

        for (int i = 0; i < count; i++) {
            A[i] = 0;
        }

        for (int i = count; i < sum; i++) {
            A[i] = 1;
        }

        for (int i = sum; i < A.length; i++) {
            A[i] = 2;
        }
    }
}

评测结果

  点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47142945

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-02 20:29:22

【LeetCode-面试算法经典-Java实现】【075-Sort Colors (颜色排序)】的相关文章

[LeetCode] 75. 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 bl

[LeetCode] 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 bl

leetCode 75.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 bl

【LeetCode-面试算法经典-Java实现】【147-Insertion Sort List(链表插入排序)】

[147-Insertion Sort List(链表插入排序)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Sort a linked list using insertion sort. 题目大意 对一个单链表表进行插入排序 解题思路 使用一个指针p指向未排好序的链表的第一个结点,在排序好的部分中找到找第一个大于等于q的前驱结点,将p对应的结点插入到正确位置,p重新指向未排好序的链表的第一个结点.直到链表完成排序好. 代码实现 结点类 算法实现类 publi

【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】

[056-Merge Intervals(区间合并)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 题目大意 给定一个区间集合,合并有重叠的区间. 解题思路 先对区间进行排序.按開始

【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】

[139-Word Break(单词拆分)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = "leetcode", di

【LeetCode-面试算法经典-Java实现】【018-4Sum(四个数的和)】

[018-4Sum(四个数的和)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: Elements in

【LeetCode-面试算法经典-Java实现】【015-3 Sum(三个数的和)】

[015-3 Sum(三个数的和)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) m

【LeetCode-面试算法经典-Java实现】【016-3 Sum Closest(最接近的三个数的和)】

[016-3 Sum Closest(最接近的三个数的和)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input