力扣75.顏色分類-C語言實現-中等難度題

題目

傳送門數組

給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。
此題中,咱們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。函數

示例 1:.net

輸入:nums = [2,0,2,1,1,0]
輸出:[0,0,1,1,2,2]code

示例 2:blog

輸入:nums = [2,0,1]
輸出:[0,1,2]排序

示例 3:圖片

輸入:nums = [0]
輸出:[0]leetcode

示例 4:get

輸入: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()簡單使用的介紹

運行結果

在這裏插入圖片描述

相關文章
相關標籤/搜索