怎样在排序数组中查找数字
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关怎样在排序数组中查找数字,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。题目:统计一个数字在排序数组中出现的次数. 例如输入排序数组
千家信息网最后更新 2026年11月03日怎样在排序数组中查找数字
这期内容当中小编将会给大家带来有关怎样在排序数组中查找数字,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
题目:
统计一个数字在排序数组中出现的次数. 例如输入排序数组{1,2,3,3,3,3,4,5},由于3在这个数中出现了4次,输出4.
# -*- coding: utf-8 -*-# @Time : 2019-07-13 15:10# @Author : Jayce Wong# @ProjectName : job# @FileName : getNumberOfK.py# @Blog : https://blog.51cto.com/jayce1111# @Github : https://github.com/SysuJaycedef getFirstK(data, k): start, end = 0, len(data) - 1 while start <= end: mid = (start + end) >> 1 if data[mid] == k: # 关键在于,如果mid是k,那么就判断前一个元素是不是也是k,如果是,说明这个位置不是 # 第一次出现,要在左边继续查找。否则,直接返回mid,因为是第一次出现了 if mid - 1 >= start and data[mid - 1] == k: end = mid - 1 else: return mid elif data[mid] < k: start = mid + 1 else: end = mid - 1 return -1def getLastK(data, k): start, end = 0, len(data) - 1 while start <= end: mid = (start + end) >> 1 if data[mid] == k: if mid + 1 <= end and data[mid + 1] == k: start = mid + 1 else: return mid elif data[mid] < k: start = mid + 1 else: end = mid - 1 return -1def getNumberOfK(data, k): """ 要获取一个有序数组中某个元素出现的次数,最直观的做法就是遍历整个数组,然后统计该元素的出现次数, 这样做的时间复杂度是O(n) 但是由于这个数组是有序的,我们可以考虑利用二分查找的方法来解决这个问题。 如果我们先利用二分查找定位到了这个元素,然后再往前往后遍历,这样的话时间复杂度也还是O(n)。 但是如果我们在利用二分查找的时候,想办法定位这个元素第一次出现的下标和最后一次出现的下标。 在利用二分查找找到一个这个元素之后,判断这个元素是否是第一个,也就是对比这个元素的前一个是否也 是k,如果不是,说明这个元素就是第一个元素,否则在这个下标的左边继续查找。 对于最后一次出现的下标同理。 """ if not data: return 0 first = getFirstK(data, k) last = getLastK(data, k) if first != -1 and last != -1: return last - first + 1 else: return 0def main(): data = [1, 2, 3, 3, 3, 3, 4, 5] k = 3 print(getNumberOfK(data, k))if __name__ == '__main__': main()
上述就是小编为大家分享的怎样在排序数组中查找数字了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
元素
数组
排序
下标
数字
就是
次数
第一次
复杂
有序
内容
复杂度
时间
分析
定位
统计
直观
这样的话
专业
中小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
蓝思科技飞鸽互联网
广州百单互联网科技有限公司
互联网科技公司华为
今日互联网科技
工业互联网科技新基建
互联网中国科技
友谊互联网络科技
中国科技互联网公司收入
中国的互联网科技企业的崛起
顶级互联网科技成果有哪些
开一家科技互联网公司需要多少钱
链环科技传统企业怎么转型互联网
互联网行业科技股
华中科技大学互联网的牛人
银行科技岗属于互联网吗
昆明中奇联合互联网科技
容联科技互联网电商
互联网时代高科技布局
科技和互联网行业的特点
亚光科技低轨卫星互联网
南京欣网互联网络科技有限公司
互联网和科技技术
金融科技与互联网金融
壕鑫互联网络科技
互联网科技公司招聘
互联网大会黑科技排名
中国互联网公司排名锤子科技
佛山市翊博互联网络科技有限公司
长沙易易互联网科技有限公司
现代科技的标志之一的互联网