代码之家  ›  专栏  ›  技术社区  ›  Maxxx

在至少出现3次的数组中查找最频繁的元素

  •  2
  • Maxxx  · 技术社区  · 6 年前

    4的数组 出现 至少3次 .

    例如:

    int arr[4] = {9,2,9,9}
    Number that occurs at least 3 times is: 9
    
    int arr[4] = {9,9,9,9}
    Number that occurs at least 3 times is: 9
    
    int arr[4] = {-1,3,3,3}
    Number that occurs at least 3 times is: 3
    
    int arr[4] = {9,-1,9,9}
    Number that occurs at least 3 times is: 9
    
    int arr[4] = {1,1,2,2}
    Number that occurs at least 3 times is: None
    

    我试过:

    int arr[4] = {9,2,9,9};
    int i;
    int count;
    int value;
    int first;
    
    int length = sizeof(arr) / sizeof(int);
    int count = 0;
    for (i=1;i<length-1;i++) {
        first = arr[0];
        if (first == arr[i]) {
            value = arr[i];
            count +=1;
        }
    }
    if (count >= 3) {
        printf("Number that occurs at least 3 times is: %d",value);
    }
    else {
        printf("Number that occurs at least 3 times is: None");
    }
    

    Number that occurs at least 3 times is: None
    

    Number that occurs at least 3 times is: 9
    

    我错过了什么?希望您能在这方面给予帮助。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Ctx    6 年前

    首先,您必须修复循环以比较最后一个元素:

    for (i=1;i<length;i++) {
        ...
    }
    

    if (count >= 3) {
        printf("Number that occurs at least 3 times is: %d",value);
    } else if (arr[1] == arr[2] && arr[1] == arr[3])
        printf("Number that occurs at least 3 times is: %d",arr[1]);
    } else {
        printf("Number that occurs at least 3 times is: None");
    }
    

        2
  •  1
  •   Ali Kanat    6 年前

    因为for循环只运行2次,计数最多只能是2。