zoukankan      html  css  js  c++  java
  • 统计一个整数在排序(升序)整数数组中出现的次数

    统计一个整数在排序(升序)整数数组中出现的次数。

    二分查找,分别查找大于目标值0.5(随便一个大于0小于1的数即可)和小于目标值0.5的数,取两位置之差。

    Python

    # -*- coding:utf-8 -*-
    class Solution:
        def GetNumberOfK(self, data, k):
            def binarySearch(data, k):
                low = 0
                high = len(data) -1
                while low <= high:
                    mid = (low + high) >> 1
                    if data[mid] < k:
                        low = mid + 1
                    elif data[mid] > k:
                        high = mid - 1
                return low
            if not data:
                return 0
            return binarySearch(data, k+0.5)-binarySearch(data, k-0.5)
    

    Java

    public class Solution {
        public int BinarySearch(int [] array, double k) {
            int low = 0, high = array.length-1, mid = 0;
            while(low <= high) {
                mid = (low + high) / 2;
                if(k >= array[mid]) {
                    low = mid + 1;
                } else {
                    high = mid - 1;
                }
            }
            return low;
        }
        public int GetNumberOfK(int [] array , int k) {
            return BinarySearch(array, k+0.5) - BinarySearch(array, k-0.5);
        }
    }
    
  • 相关阅读:
    点分治 / 点分树题目集
    HNOI2019 游记
    WC2019 题目集
    SA / SAM 题目集
    Min_25 筛小结
    NOIP2018 差点退役记
    Atcoder 乱做
    DP及其优化
    计数与概率期望小结
    分库分表之后全局id咋生成?
  • 原文地址:https://www.cnblogs.com/renzongxian/p/7464391.html
Copyright © 2011-2022 走看看