[简单-剑指 Offer 53

[简单-剑指 Offer 53 - I. 在排序数组中查找数字 I]

统计一个数字在排序数组中出现的次数。

示例 1:

输入: nums = [5,7,7,8,8,10], target = 8
输出: 2

示例 2:

输入: nums = [5,7,7,8,8,10], target = 6
输出: 0

限制:

0 <= 数组长度 <= 50000

方法1:使用multiset数据结构的count函数,直接计算某个数字在数据结构中的个数

class Solution {
public:
    multiset<int>mySet;

public:
    int search(vector<int>& nums, int target) {
        int size = nums.size();
        for (int i = 0; i<size; i++) {
            mySet.insert(nums[i]);
        }
        return mySet.count(target);
    }
};

方法2:编译数组,一个个判断数组元素是否与目标数值相同,相同则加1

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int size = nums.size();
        int count = 0;
        for (int i = 0; i<size; i++) {
            if (target == nums[i]) {
                count++;
            }
        }
        return count;
    }
};

方法3:直接使用计数函数

class Solution {
public:
    int search(vector<int>& nums, int target) {
	int count = count(nums.begin(), nums.end(), target);
        return count;
    }
}

方法4:既然数组是排好序的,那就可以使用二分查找算法


方法5:使用map,数组元素作为map的key,相同元素的个数作为data

class Solution {
public:
    map<int, int>myMap;

public:
    int search(vector<int>& nums, int target) {
	for (int i = 0; i<nums.size(); i++) {
            myMap[nums[i]]++;
        }
        return myMap[target];
    }
};
原文地址:https://www.cnblogs.com/wangdongfang/p/13701090.html