using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型
     */

    private int BinarySearch(List<int> nums, int k, bool findFirst) {
        int left = 0, right = nums.Count - 1;
        int result = -1;

        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] == k) {
                result = mid;
                if (findFirst) {
                    right = mid - 1; // 找第一次出现的位置
                } else {
                    left = mid + 1; // 找最后一次出现的位置
                }
            } else if (nums[mid] < k) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }

        return result;
    }
    public int GetNumberOfK (List<int> nums, int k) {
        // write code here
        // 找到 k 第一次出现的位置
        int first = BinarySearch(nums, k, true);
        // 如果 k 不存在于数组中,直接返回 0
        if (first == -1) return 0;
        // 找到 k 最后一次出现的位置
        int last = BinarySearch(nums, k, false);
        // 计算 k 出现的次数
        return last - first + 1;
    }
}