数字在排序数组中出现的次数

博客聚焦于统计排序数组中一个数字出现的次数,提到可运用二分法查找来完成统计。这是信息技术领域中数组处理和算法应用的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
统计一个数字在排序数组中出现的次数。
排序数组:二分法查找,统计次数

# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        # write code here
        if not data:return 0#注意为空的情况
        count=0
        start=0
        end=len(data)-1
        while start<=end:
            mid=(start+end)/2
            if data[mid]<k:
                start=mid+1
            if data[mid]>k:
                end=mid-1
            if data[mid]==k:
                while(mid>=0 and data[mid]==k):#中间向左找到最前一个
                    mid-=1#最后的mid位置不是数字k
                mid+=1#回到第一个数字k的位置
                while(mid<=len(data)-1 and data[mid]==k):
                    mid+=1
                    count+=1
                return count
            return 0
public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if (array.length==0) return 0;
        int count=0;
        int start=0;
        int end=array.length-1;
        while (start<=end){
            int mid=(start+end)>>1;
            if (k<array[mid]) end=mid-1;
            if(k>array[mid]) start=mid+1;
            if(k==array[mid]){
                while(mid>=0 && k==array[mid]){
                    mid-=1;
                }
                mid+=1;
                while(mid<=array.length-1 && k==array[mid]){
                    mid+=1;
                    count+=1;
                }
                return count;
            }
        }
        return 0;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值