#include <unordered_map> classSolution{ public: //二分 intgetNumberOfK(vector<int>& nums , int k){ if(nums.empty()) return0; //0--找左端点 int l =0, r = nums.size() - 1; while(l < r) { int mid = l + r >>1; if(nums[mid] < k) l = mid +1; else r = mid; } //此时找到值为k的左端点 l = r if(nums[l] != k) return0; //判断是否存在k int left = l; //--找右端点 l =0, r = nums.size() - 1; while(l < r) { int mid = l + r + 1>>1; if(nums[mid] <= k) l= mid; else r = mid - 1; } return r - left + 1; } //hash On intgetNumberOfK1(vector<int>& nums , int k){ unordered_map<int, int> hash; for(auto x : nums) { hash[x] ++; } return hash[k]; } };