剑指offer 面试53题
2024-10-20 09:32:38
面试53题:
题目:统计一个数字在排序数组中出现的次数。
思路:二分查找法,分别找到此数字在排序数组中第一次和最后一次出现的位置,然后次数等于两个位置之差加1。
时间复杂度:O(log n)
解题代码:
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
number = 0
if data !=None and len(data)>0:
length=len(data)
first = self.GetFirst(data,length,k,0,length-1)
last = self.GetLast(data,length,k,0,length-1)
if first > -1 and last > -1:
number=last-first+1
return number def GetFirst(self,data,lenth,k,start,end):
if start>end:
return -1
middle = (start+end)//2
if data[middle]==k:
if middle>0 and data[middle-1]==k:
end = middle -1
else:
return middle
elif data[middle]>k:
end=middle-1
else:
start=middle+1
return self.GetFirst(data,lenth,k,start,end) def GetLast(self, data, lenth, k, start, end):
if start>end:
return -1
middle=(start+end)//2
if data[middle]==k:
if middle<end and data[middle+1]==k:
start = middle+1
else:
return middle
elif data[middle]>k:
end=middle-1
else:
start=middle+1
return self.GetLast(data, lenth, k, start, end)
最新文章
- android dialog 有关token的问题
- 一致性hash的理解
- 【FTP】在自己的电脑上建立FTP服务器
- Android Action Bar简介
- 用 mCustomScrollbar 滚动条插件实现滚动更新添加数据
- php 执行外部命令exec() system() passthru()
- C++C++ 指针(二)--c++ 指针(二)--c++
- 【LeetCode】Swap Nodes in Pairs
- 获取图片中的文本--MODI
- 对lea与mov的理解
- python :ascii codec can't decode byte 0xe8 in posit
- 关于字符型char变量
- static 关键字 静态成员变量及静态成员函数
- MT7688交叉编译环境配置
- 【API知识】一种你可能没见过的Controller形式
- Python_每日习题_0006_斐波那契数列
- timescaledb 集成 madlib
- Linux内核分析第十八章读书笔记
- C# 因IIS回收导致定时器失效的解决方案
- Autocomplete TEdit
热门文章
- 初识WatiN
- OA项目之权限设计②
- Visual Studio- “无法启动此程序,因为计算机中丢失 xxx.dll尝试重新安装该程序以解决此问题";
- iOS valueForKeyPath快速计算求和、平均值、最大、最小
- StoryBoard不使用AutoLayout情况下 按比例快速兼容适配iPhone6/6 Plus教程【转载】
- 读写文件,用代码在讲html文件转为jsp文件
- IRQ与FIQ的区别
- Yarn源码分析之如何确定作业运行方式Uber or Non-Uber?
- E - Leading and Trailing 求n^k得前三位数字以及后三位数字,保证一定至少存在六位。
- CSS权威指南(第3版)