剑指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 发布!
审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
人工智能
+关注
关注
1821文章
50512浏览量
267746 -
机器学习
+关注
关注
67文章
8570浏览量
137422 -
深度学习
+关注
关注
73文章
5614浏览量
124753
发布评论请先 登录
相关推荐
热点推荐
使用ADUM3166的通信中,通信次数不定,会出现返回错误指令80000300,什么原因导致的?
采用ADUM3166连接单片机和电脑,单片机支持高速协议,在电脑上发送指令,或接收指令,在没有ADUM3166的通讯上没有任何问题,无论发多少次均显示正常,但在使用ADUM3166的通信中,通信次数
发表于 05-13 07:15
嵌入式春招笔试高频算法题(附解题思路)
,若为无序数组,需先排序再去重;
原地去重:不使用额外数组,直接修改原数组,符合嵌入式笔试的效率要求;
返回值:笔试中,常要求返回去重后的数组
发表于 03-18 10:08
MAX16050/MAX16051:电压监测与排序电路的理想选择
MAX16050/MAX16051:电压监测与排序电路的理想选择 在电子设计领域,对于电压监测和电源排序的需求日益增长,特别是在服务器、工作站、网络系统等复杂设备中。今天,我们就来深入
探秘ADM1186:高效电压监测与排序芯片的应用指南
探秘ADM1186:高效电压监测与排序芯片的应用指南 在电子工程师的日常工作中,电源管理是一个至关重要的环节。良好的电源管理不仅能确保设备的稳定运行,还能提高系统的可靠性和性能。今天,我们就来深入
ADM1066:多功能电源监控与排序芯片的深度解析
ADM1066:多功能电源监控与排序芯片的深度解析 在电子设备的设计中,电源的监控与排序是确保系统稳定运行的关键环节。ADM1066作为一款功能强大的电源监控与排序芯片,为多电源系统提
探索LM3880:三轨简单电源排序器的卓越性能与应用
探索LM3880:三轨简单电源排序器的卓越性能与应用 在电子设计领域,电源管理是一个至关重要的环节。今天,我们将深入探讨德州仪器(TI)推出的LM3880三轨简单电源排序器,它为多电压轨的电源
深入解析 UCD91320:32 轨 PMBus 电源排序器与系统管理器
深入解析 UCD91320:32 轨 PMBus 电源排序器与系统管理器 在电子系统设计中,精确的电源管理和故障监测至关重要。德州仪器(TI)的 UCD91320 32 - 轨 PMBus 电源排序
MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路
MAX16050/MAX16051:具备反向排序功能的电压监控与排序电路 在电子系统设计中,对电源电压的精确监控和有序控制至关重要。Maxim Integrated推出的MAX16050
光纤线芯都是按照什么颜色排序的
多次有朋友留言问到,光纤熔接颜色如何排序,这个在实际应用中还是比较多的,那么今天我们就不讲原理了,直接用图文简单明了讲光纤熔接色谱,大家可以了解下。 一、常规排序 1、4芯的排序:蓝、
NL37WZ16 高性能三路缓冲器技术深度解析
安森美 NL37WZ16三路缓冲器是高性能缓冲器,输入工作电压范围为1.65V至5.5V,具有-55°C至+125°C的宽工作温度范围。安森美NL37WZ16器件可用作线路接收器接收慢速输入信号。这些器件具有驱动能力强、功耗低、信号完整性好的特点,使NL
数组的初体验
程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋,在该购
物
发表于 11-25 08:06
MDK536 + SWM34S平台移植LVGL8.3.3 定义数组使用ALIGN()对齐时编译报错是什么原因导致的?
中出现此错误,不知道是什么原因导致的,请教一下各位大神。
具体问题如下:
lv_rt_thread_port.c中Line37:
static ALIGN(8) rt_uint8_t
发表于 10-09 08:00
剑指Offer(37):数字在排序数组中出现的次数
评论