中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言怎么找出數組中重復的數字

小億
194
2023-10-25 22:39:38
欄目: 編程語言

可以使用兩種方法來找出數組中重復的數字。

方法一:使用“哈希表”

  1. 創建一個哈希表,用于記錄每個數字出現的次數。
  2. 遍歷數組,將數組中的每個數字作為鍵,放入哈希表中,并將對應的值加1。
  3. 遍歷哈希表,找出值大于1的鍵,即為重復的數字。

示例代碼如下:

#include <stdio.h>

void findDuplicates(int arr[], int size) {
    // 哈希表
    int hashTable[1000] = {0};
    
    // 遍歷數組,將數字放入哈希表
    for (int i = 0; i < size; i++) {
        hashTable[arr[i]] += 1;
    }
    
    // 遍歷哈希表,找出重復的數字
    for (int i = 0; i < 1000; i++) {
        if (hashTable[i] > 1) {
            printf("%d ", i);
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    printf("重復的數字為:");
    findDuplicates(arr, size);
    
    return 0;
}

方法二:使用“交換法”

  1. 遍歷數組,將數組中的每個數字放到對應的索引位置上。
  2. 如果當前索引位置上已經有了相同的數字,則找到了一個重復的數字。

示例代碼如下:

#include <stdio.h>
#include <stdbool.h>

void findDuplicates(int arr[], int size) {
    printf("重復的數字為:");
    
    for (int i = 0; i < size; i++) {
        while (arr[i] != i) {
            if (arr[i] == arr[arr[i]]) {
                printf("%d ", arr[i]);
                break;
            }
            
            int temp = arr[arr[i]];
            arr[arr[i]] = arr[i];
            arr[i] = temp;
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    findDuplicates(arr, size);
    
    return 0;
}

以上兩種方法都可以找出數組中重復的數字,選擇哪種方法取決于具體的需求和數據規模。

0
大英县| 紫阳县| 榆中县| 兴文县| 哈密市| 淮北市| 金华市| 福州市| 邯郸市| 吴堡县| 抚顺县| 察雅县| 南安市| 东辽县| 九江县| 方山县| 嘉善县| 山东省| 曲麻莱县| 城口县| 平安县| 奉化市| 安远县| 广水市| 屯昌县| 调兵山市| 沭阳县| 新泰市| 商河县| 巴林右旗| 桐乡市| 东乡| 中宁县| 大宁县| 若羌县| 磐石市| 织金县| 龙海市| 若尔盖县| 金寨县| 曲靖市|