剑指Offer(37):数字在排序数组中出现的次数
一、引子
这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。
二、题目
统计一个数字在排序数组中出现的次数。
1、思路
看见有序,肯定就是二分查找了
做法就是使用二分法找到数字在数组中出现的第一个位置,再利用二分法找到数字在数组中出现的最后一个位置。时间复杂度为O(logn + logn),最终的时间复杂度为O(logn)。
举个例子,找到数字k在数组data中出现的次数。
数组data中,数字k出现的第一个位置:
我们对数组data进行二分,如果数组中间的数字小于k,说明k应该出现在中间位置的右边;如果数组中间的数字大于k,说明k应该出现在中间位置的左边;如果数组中间的数字等于k,并且中间位置的前一个数字不等于k,说明这个中间数字就是数字k出现的第一个位置。
同理,数字k出现的最后一个位置,也是这样找的。但是判断少有不同。我们使用两个函数分别获得他们。
2、编程实现
代码实现方案:
python有自带的方法进行查找~
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)
分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!
本文由博客一文多发平台 OpenWrite 发布!
审核编辑 黄昊宇
-
人工智能
+关注
关注
1813文章
49770浏览量
261707 -
机器学习
+关注
关注
66文章
8541浏览量
136242 -
深度学习
+关注
关注
73文章
5591浏览量
123923
发布评论请先 登录
NL37WZ16 高性能三路缓冲器技术深度解析
数组的初体验
MDK536 + SWM34S平台移植LVGL8.3.3 定义数组使用ALIGN()对齐时编译报错是什么原因导致的?
如果要使用数字信号隔离芯片将AD7606对数字系统隔离,应该如何铺地?
TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源
stm32 DMA串口接收到数组,数组元素顺序错乱怎么解决?
详解Linux sort命令之掌握排序技巧与实用案例
TimSort:一个在标准函数库中广泛使用的排序算法
时序数据库TDengine 2024年保持高增长,实现收入翻倍

剑指Offer(37):数字在排序数组中出现的次数
评论