Likou75。色の分類-C言語の実装-中程度の難易度の質問

トピック

ポータル

赤、白、青を含むn個の要素の配列が与えられた場合、同じ色の要素が隣接し、赤、白、青の順序で配置されるように、それらを所定の位置に並べ替えます。
この質問では、整数0、1、および2を使用して、それぞれ赤、白、および青を表します。

例1:

入力:nums = [2,0,2,1,1,0]
出力:[0,0,1,1,2,2]

例2:

入力:nums = [2,0,1]
出力:[0,1,2]

例3:

入力:nums = [0]
出力:[0]

例4:

入力:nums = [1]
出力:[1]

促す:

n == nums.length
1 <= n <= 300
nums[i] 为 0、1 或 2

ソース:LeetCode

問題解決

テンプレート

void sortColors(int* nums, int numsSize){
    
    

}

分析

別の考え方の理解によると、この質問は色をできるだけ近くに配置するために赤、白、青の順序を要求し、この順序はたまたま012の順序であるため、次の質問を簡単に理解できます。これは、必要に応じて配列要素を配置することを意味します。これにより、要素の順序で配列要素を配置し、問題の要件を満たすために可能な限り互いに近づけることもできます。

元のコード

int cmp(int *a, int *b) {
    
    
    return *a - *b;
}
void sortColors(int* nums, int numsSize){
    
    
        qsort(nums, numsSize, sizeof(int), cmp);
    return nums;
}

qsortはC言語のソート関数であり、配列分割のトピックでも使用されています。興味がある場合は、qsort()の簡単な使用法の概要をご覧ください。

運転結果

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_44922487/article/details/113832735