博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题38-------数字在排序数组中出现的次数(数组)
阅读量:4181 次
发布时间:2019-05-26

本文共 1099 字,大约阅读时间需要 3 分钟。

题目:统计一个数字在排序数组中出现的次数,例如 {1,2,3,3,3,3,4,5},3 出现了4次 。

代码解决

#include
int s[8]={
1,2,3,3,3,3,4,5};int findfirst(int x){ int left = 0, right = 7; while(left <= right){ int mid = (left + right)/2; if(s[mid] == x){ if((mid <= 0) || s[mid-1] != x) return mid; right = mid - 1; } else if(s[mid] > x) right = mid - 1; else left = mid + 1; } return -1;}int findlast(int x){ int left = 0, right = 7; while(left <= right){ int mid = (left + right)/2; if(s[mid] == x){ if((mid >= 7) || s[mid+1] != x) return mid; left = mid + 1; } else if(s[mid] > x) right = mid - 1; else left = mid + 1; } return -1;}void Print(int x){ int first = findfirst(x); int last = findlast(x); if(last ==-1 || first == -1) printf("%d 不存在\n",x); else printf("%d 出现了 %d 次\n",x, findlast(x) - findfirst(x)+1);}int main(){ int x = 3; Print(x); x = 5; Print(x); x = 6; Print(x);}

结果

这里写图片描述

你可能感兴趣的文章
spring security
查看>>
java线程池管理多线程的应用
查看>>
redis集群图解
查看>>
tcp_timestamps tcp_tw_recycle引起的服务器连接不上问题
查看>>
windows下ES和head插件的安装
查看>>
RAP一种更高效的前后端接口对接解决方案
查看>>
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
查看>>
ELK搭建教程(全过程)
查看>>
maven私服搭建使用
查看>>
Netty学习路线总结
查看>>
基于mybatis拦截器实现数据权限
查看>>
分布式文件系统FastDFS详解
查看>>
centos7上rabbitmq搭建
查看>>
rabbitmq集成spring的xml配置和java代码
查看>>
RabbitMQ消息确认(发送确认,接收确认)
查看>>
一篇笔记整理JVM工作原理
查看>>
activemq、rabbitmq、kafka原理和比较
查看>>
秒杀系统设计思路和实现方法
查看>>
Redis常见面试题
查看>>
JDK重要包和Java学习方法论
查看>>