实现代码:

int GetFirstPosOfDestData(int* pData, int size, int destData, int begin, int end)
{if (nullptr == pData || size < 1) return -1;if (begin > end) return -1; // 未找到int middle = begin + (end - begin) / 2; // 防止溢出,不要使用middle = (begin + end) / 2;if (destData == pData[middle]){// 已经是第一个,或者前一个不等于destDataif (0 == middle || pData[middle - 1] != destData) return middle;// 继续在前面区间查找else end = middle - 1;}else if (destData > pData[middle]) begin = middle + 1;else end = middle - 1;return GetFirstPosOfDestData(pData, size, destData, begin, end);
}

int GetLastPosOfDestData(int* pData, int size, int destData, int begin, int end)
{if (nullptr == pData || size < 1) return -1;if (begin > end) return -1; // 未找到int middle = begin + (end - begin) / 2; // 防止溢出,不要使用middle = (begin + end) / 2;if (destData == pData[middle]){// 已经是最后一个,或者前一个不等于destDataif (end == middle || pData[middle + 1] != destData) return middle;// 继续在后面区间查找else begin = middle + 1;}else if (destData > pData[middle]) begin = middle + 1;else end = middle - 1;return GetLastPosOfDestData(pData, size, destData, begin, end);
}
int GetCountOfDestData(int* pData, int size, int destData)
{if (nullptr == pData || size < 1) return 0;int toalCount = 0;int firstPos = GetFirstPosOfDestData(pData, size, destData, 0, size - 1);int lastPos = GetLastPosOfDestData(pData, size, destData, 0, size - 1);if (firstPos != -1 && lastPos != -1)toalCount = lastPos - firstPos + 1;return toalCount;
}

38. 数字在排序数组中出现的次数(C++版本)相关推荐

  1. 【剑指offer-Java版】38数字在排序数组中出现的次数

    数字在排序数组中出现的次数: 最简单粗暴的方法是O(n^2) 可能的解法可以采用二分,首先根据二分找到给定数字在数组中的位置,然后再左右二分,找到边界(第一个和最后一个),左右边界的差值就是出现次数 ...

  2. 剑指offer——面试题38:数字在排序数组中出现的次数

    剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...

  3. 面试题整理11 数字在排序数组中出现的次数

    <剑指offer>面试题38: 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在此数组中出现了4次,因此输出4. 分析:看到排 ...

  4. 剑指offer:数字在排序数组中出现的次数

    题目描述 统计一个数字在排序数组中出现的次数. 解题思路 暴力求解,没用到排序的已知条件. class Solution { public:int GetNumberOfK(vector<int ...

  5. 【C语言】数字在排序数组中出现的次数(改动)

    //数字在排序数组中出现的次数(改动) //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3.3,4,5}和数字3,因为3出现了4次,因此输出4. #include <st ...

  6. 剑指Offer(Java版):数字在排序数组中出现的次数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组为 {1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中 ...

  7. 《剑指offer》-- 调整数组顺序使奇数位于偶数前面、顺时针打印矩阵、数字在排序数组中出现的次数

    一.调整数组顺序使奇数位于偶数前面: 1.题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之 ...

  8. 【剑指offer】数字在排序数组中出现的次数

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/27364557 题目描写叙述: 统计一个数字在排序数组中出现的次数. 输入: 每一个測试案例 ...

  9. 《剑指offer》数字在排序数组中出现的次数

    题目:统计一个数字在排序数组中出现的次数. 解析:不要怀疑你的眼睛,也不用怀疑这题目难度,直接干! public class Solution {public int GetNumberOfK(int ...

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

    package demo;import java.util.Arrays;/** 题目描述 统计一个数字在排序数组中出现的次数.*/ public class Offer_23 {public int ...

最新文章

  1. 列出对象锁(lock)信息及其被杀的会话(sid,serial#)信息
  2. 基于Centos7构建Kubernetes平台
  3. 12月13日主题讨论日
  4. 解决sockjs.js?9be2:1609 GET http://192.168.1.1:8080/sockjs-node/info?t=1634257459…… 中的报错
  5. html给文字添加阴影效果,text-shadow css文字阴影_字体投影属性样式
  6. 『设计模式』JAVA I/O 与装饰者模式UML图
  7. python set判断一个键是否存在_python redis 有序集合sorted set检查某个键是否存在
  8. java 类 null_深入理解java中的null“类型”
  9. Java面试题及答案,java对外提供接口
  10. memcpy()和memmove()函数之间区别
  11. html压缩原理,webpack--前端性能优化与Gzip原理
  12. C++之const关键字探究
  13. 韦诺之战wesnoth没有声音
  14. 学设计要学python吗_北京学习Python设计大概需要多长时间能学会
  15. 简述几种常用编码器协议
  16. linux制作img镜像文件,制作img镜像文件的5种方法 .
  17. 中职学校实验室安全整改总结报告
  18. 【习题 4-7 UVA - 509】RAID!
  19. 使用433MHz RF模块制作一艘简易的Arduino遥控小船
  20. 我的世界服务器显示空岛等级,mc空岛每种方块等级 | 手游网游页游攻略大全

热门文章

  1. react 刨坑之路之使用create-react-app脚手架
  2. SpringBoot Environment读取配置文件乱码
  3. 读取topic数据存储到文件内
  4. 姆巴佩独造三球一战成名 阿里云打破世界杯流量纪录 1
  5. 互联网+医疗考验无线部署 飞塔SAA同频部署模式巧妙化解
  6. 想成为大数据分析师必须知道的这些事儿(文末福利)
  7. Windows Azure Storage (5) Windows Azure Drive
  8. CHIL-ORACLE-创建视图
  9. iOS--资料--类目Category收集
  10. 2014年最新前端开发面试题(题目列表+答案 完整版)