当前位置:首页 C++ > 正文

c++实现数字在排序数组中出现的次数

作者:野牛程序员:2023-08-18 19:20:49 C++阅读 2709

以下是一个使用C++实现统计数字在排序数组中出现次数的示例代码:

#include <iostream>
#include <vector>

int countOccurrences(const std::vector<int>& nums, int target) {
    int left = 0, right = nums.size() - 1;
    int firstOccurrence = -1, lastOccurrence = -1;

    // Find the first occurrence
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            firstOccurrence = mid;
            right = mid - 1;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    left = 0, right = nums.size() - 1;

    // Find the last occurrence
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (nums[mid] == target) {
            lastOccurrence = mid;
            left = mid + 1;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    if (firstOccurrence != -1 && lastOccurrence != -1) {
        return lastOccurrence - firstOccurrence + 1;
    } else {
        return 0;
    }
}

int main() {
    std::vector<int> nums = {1, 2, 2, 2, 3, 4, 5, 5, 5, 6};
    int target = 2;

    int count = countOccurrences(nums, target);

    std::cout << "The target number " << target << " appears " << count << " times." << std::endl;

    return 0;
}

这个示例代码定义了一个函数 countOccurrences,该函数使用二分查找在排序数组中找到目标数字的第一次出现和最后一次出现,然后计算它们的差来得到数字出现的次数。在 main 函数中,使用示例数组来测试这个函数并输出结果。

请注意,此代码假设输入数组已经排序。如果数组未排序,需要在使用前先对数组进行排序。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击