搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货python
csdn:https://blog.csdn.net/baidu_31657889/git
github:https://github.com/aimi-cn/AILearnersgithub
这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提高下本身的算法能力。
查看完整的剑指Offer算法题解析请点击CSDN和github连接:
剑指Offer完整习题解析CSDN地址
github地址算法
统计一个数字在排序数组中出现的次数。编程
看见有序,确定就是二分查找了数组
作法就是使用二分法找到数字在数组中出现的第一个位置,再利用二分法找到数字在数组中出现的最后一个位置。时间复杂度为O(logn + logn),最终的时间复杂度为O(logn)。微信
举个例子,找到数字k在数组data中出现的次数。机器学习
数组data中,数字k出现的第一个位置:函数
咱们对数组data进行二分,若是数组中间的数字小于k,说明k应该出如今中间位置的右边;若是数组中间的数字大于k,说明k应该出如今中间位置的左边;若是数组中间的数字等于k,而且中间位置的前一个数字不等于k,说明这个中间数字就是数字k出现的第一个位置。学习
同理,数字k出现的最后一个位置,也是这样找的。可是判断少有不一样。咱们使用两个函数分别得到他们。
python
代码实现方案:python有自带的方法进行查找~
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)复制代码
AIMI-CN AI学习交流群【1015286623】 获取更多AI资料
分享技术,乐享生活:咱们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!
本文由博客一文多发平台 OpenWrite 发布!