75.颜色分类

两遍扫描:

扫描第一遍,记录0、1、2的个数;

扫描第二遍,重填数组。

/*

*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<iostream>
void sortColors(int* nums, int numsSize){

    int i,j,k,n=numsSize,t;
    i=j=k=0;
    for(t=0;t<n;t++){
        if(nums[t]==0) i++;
        if(nums[t]==1) j++;
        if(nums[t]==2) k++;
    }
    t=0;
    while(t<n){
            printf("1\n");
        while(i){
            nums[t]=0;
            i--;
            t++;
        }
        while(j){
            nums[t]=1;
            j--;
            t++;
        }
        while(k){
            nums[t]=2;
            k--;
            t++;
        }

    }
}
int main()
{
    int* nums, numsSize=6,a[6]={2,0,2,1,1,0},i;
    nums=(int*)malloc(sizeof(int)*6);

    nums=a;

    sortColors(nums,numsSize);
    for(i=0;i<numsSize;i++){
        printf("%d ",nums[i]);
    }
    //printf("%d\n",rs);
    return 0;
}

 

上一篇:Java 核心技术总结出 PDF 版本了!!!


下一篇:901. 股票价格跨度