0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

一、引子

这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。

二、题目

统计一个数字在排序数组中出现的次数。

1、思路

看见有序,肯定就是二分查找了

做法就是使用二分法找到数字在数组中出现的第一个位置,再利用二分法找到数字在数组中出现的最后一个位置。时间复杂度为O(logn + logn),最终的时间复杂度为O(logn)。

举个例子,找到数字k在数组data中出现的次数。

数组data中,数字k出现的第一个位置:

我们对数组data进行二分,如果数组中间的数字小于k,说明k应该出现在中间位置的右边;如果数组中间的数字大于k,说明k应该出现在中间位置的左边;如果数组中间的数字等于k,并且中间位置的前一个数字不等于k,说明这个中间数字就是数字k出现的第一个位置。

同理,数字k出现的最后一个位置,也是这样找的。但是判断少有不同。我们使用两个函数分别获得他们。

2、编程实现

python

代码实现方案:
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 高性能三路缓冲器技术深度解析

    安森美 NL37WZ16三路缓冲器是高性能缓冲器,输入工作电压范围为1.65V至5.5V,具有-55°C至+125°C的宽工作温度范围。安森美NL37WZ16器件可用作线路接收器接收慢速输入信号。这些器件具有驱动能力强、功耗低、信号完整性好的特点,使NL
    的头像 发表于 11-25 15:15 226次阅读
    ‌NL<b class='flag-5'>37</b>WZ16 高性能三路缓冲器技术深度解析

    数组的初体验

    程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋,该购 物
    发表于 11-25 08:06

    UART通信中出现随机乱码怎么解决?

    UART 通信中出现随机乱码
    发表于 11-21 07:05

    MDK536 + SWM34S平台移植LVGL8.3.3 定义数组使用ALIGN()对齐时编译报错是什么原因导致的?

    中出现此错误,不知道是什么原因导致的,请教一下各位大神。 具体问题如下: lv_rt_thread_port.c中Line37: static ALIGN(8) rt_uint8_t
    发表于 10-09 08:00

    季丰电子与盛科技达成战略合作

    8月29日,科技成立20周年庆祝活动上,季丰电子与盛科技举行了正式的战略合作签约仪式。
    的头像 发表于 09-01 18:08 933次阅读

    如果要使用数字信号隔离芯片将AD7606对数字系统隔离,应该如何铺地?

    AD7606没有数字地线,所以给人一头雾水的感觉。 ADI的参考文献中出现了两种铺地模式。 芯片的DATASHEET文档中是数字地和模拟地分开 单点接地。 EVAL-AD760xS
    发表于 04-16 08:22

    TDengine 发布时序数据分析 AI 智能体 TDgpt,核心代码开源

    组成部分,标志着时序数据库原生集成 AI 能力方面迈出了关键一步。 TDgpt 是内嵌于 TDengine 中的时序数据分析 AI 智能体,具备时序数据预测、异常检测、数据补全、分类
    的头像 发表于 03-27 10:30 567次阅读
    TDengine 发布时<b class='flag-5'>序数</b>据分析 AI 智能体 TDgpt,核心代码开源

    stm32 DMA串口接收到数组数组元素顺序错乱怎么解决?

    配置DMA循环模式,使用HAL_UART_Receive_DMA(&huart1,buffer,4)函数将串口数据循环发送到4个元素的buffer数组内,上位机20ms发送一次数
    发表于 03-12 08:02

    详解Linux sort命令之掌握排序技巧与实用案例

    linux系统使用过程中,提供了sort排序命令,支持常用的排序功能。 常用参数 sort命令支持很多参数,常用参数如下:   短参数 长参数 说明 -n – number-sort 按字符串数值
    的头像 发表于 01-09 10:10 1597次阅读

    TimSort:一个标准函数库中广泛使用的排序算法

    计算机科学的领域,排序算法是每位学生必学的基础,而排序的需求是每位程序员在编程过程中都会遇到的。 在你轻松调用 .sort() 方法对数据进行排序时,是否曾好奇过,这个简单的方法背后
    的头像 发表于 01-03 11:42 963次阅读

    序数据库TDengine 2024年保持高增长,实现收入翻倍

    表现以及多维度的行业合作,全力奔跑在行业赛道上,为企业数字化转型和时序数据场景赋能提供了重要支持。 涛思数据(TDengine)创始人 CDO 上海论坛、IMC 中国制造数字科技峰会、SNEC 国际光伏
    的头像 发表于 01-02 13:50 800次阅读
    时<b class='flag-5'>序数</b>据库TDengine 2024年保持高增长,实现收入翻倍

    用ADS1282做一个采样率可变的采集器,采样率切换的过程中出现初始化失败的情况,怎么解决?

    用ADS1282做一个采样率可变的采集器,某个采样率采集一段时间后,采样率切换为另一个采样率,采样率切换的过程中出现初始化失败的情况,即实际采样率不是预先设定的采样率,SCLK=(1/4)MCLK,ADS1282初始化用F
    发表于 01-01 07:14

    数组的下标为什么可以是负数

    最近有同学发来这样一段代码,并提出一个问题,数组的下标为什么可以是负数?     #include int main(){ const char *s = "helloworld"; const
    的头像 发表于 12-20 11:18 874次阅读

    使用DAC38RF84过程中出现复位脚异常现象,怎么解决?

    使用DAC38RF84过程中出现复位脚异常现象。该复位脚外接1只阻值为1K的上拉电阻,上拉电阻另一端与1.8V电压相接。具体异常现象为:DA芯片上电后用万用表测量复位脚电压,电压值为0.3V
    发表于 12-16 08:41

    使用ADS1256中出现重新上电会出现读取AD值不一样的情况,怎么解决?

    您好,我使用ADS1256中出现重新上电会出现读取AD值不一样的情况:我这边一直给一个恒定的电压输入,重复上电断电读取AD值的实验,10次中大约出现两次读到的AD值异常偏大,直接测
    发表于 12-13 09:34