Sort Colors —— LeetCode

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.

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?

题目大意:给一个只有0,1,2的数组,排序,不要用库函数。

解题思路:使用类似快排的思想,交换即可。其实可以one-pass的,写的不好,要遍历3遍。

public class Solution {
    public void sortColors(int[] nums) {
        if(nums==null||nums.length==0){
            return;
        }
        swap(nums,0,2);
        swap(nums,1,2);
        swap(nums,0,1);
    }
    private void swap(int[] nums,int sm,int lg){
        int i=0,j=nums.length-1;
        while(i<j){
            while(i<nums.length&&nums[i]!=lg){
                i++;
            }
            while(j>=0&&nums[j]!=sm){
                j--;
            }
            if(i<j){
                int t = nums[i];
                nums[i]=nums[j];
                nums[j]=t;
            }
        }
    }
}
时间: 2024-10-07 23:50:56

Sort Colors —— LeetCode的相关文章

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, an

Sort Colors -- leetcode

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

Sort Colors [leetcode] 扫描数组一遍,O(1)空间复杂度的解法

扫描数组两遍的方法是:第一遍计算有每个颜色有多少个,第二遍再将所有颜色赋回数组 扫描数组一遍的方法: nextPos数组中记录三种颜色的下一个位置 考虑A={0,2,1,1,0}时我们应该如何更新nextPos 初始:nextPos = {0,0,0} 第一个颜色是0,所以nextPos[0] = 1.A={0...} 但是由于1和2必须在0的后面,所以nextPos[1], nextPos[2]均为1 第二个颜色是2,所以nextPos[2] = 2.A={0, 2...} 1和0均在2的前面

leetcode Sort Colors

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} leetcode Sort Colors 计数排序 注: 题目的要求是将 A 数组重新排列成有序, 而不是将排序的序列输出 Sort Colors Given an array with n o

【LeetCode】Sort Colors

LeetCode OJ 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, w

LeetCode OJ平台上Sort Colors题目算法探讨

原题如下,意思就是说无序数组(由0,1,2组成),一遍扫描,把数组整理成若干个0-若干个1-若干个2这样的序列. 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 integ

[leetcode]Sort Colors @ Python

原题地址:https://oj.leetcode.com/problems/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 integer

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 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 bl