38. 数字在排序数组中出现的次数(C++版本)
实现代码:
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++版本)相关推荐
- 【剑指offer-Java版】38数字在排序数组中出现的次数
数字在排序数组中出现的次数: 最简单粗暴的方法是O(n^2) 可能的解法可以采用二分,首先根据二分找到给定数字在数组中的位置,然后再左右二分,找到边界(第一个和最后一个),左右边界的差值就是出现次数 ...
- 剑指offer——面试题38:数字在排序数组中出现的次数
剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...
- 面试题整理11 数字在排序数组中出现的次数
<剑指offer>面试题38: 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在此数组中出现了4次,因此输出4. 分析:看到排 ...
- 剑指offer:数字在排序数组中出现的次数
题目描述 统计一个数字在排序数组中出现的次数. 解题思路 暴力求解,没用到排序的已知条件. class Solution { public:int GetNumberOfK(vector<int ...
- 【C语言】数字在排序数组中出现的次数(改动)
//数字在排序数组中出现的次数(改动) //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3.3,4,5}和数字3,因为3出现了4次,因此输出4. #include <st ...
- 剑指Offer(Java版):数字在排序数组中出现的次数
2019独角兽企业重金招聘Python工程师标准>>> 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组为 {1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中 ...
- 《剑指offer》-- 调整数组顺序使奇数位于偶数前面、顺时针打印矩阵、数字在排序数组中出现的次数
一.调整数组顺序使奇数位于偶数前面: 1.题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之 ...
- 【剑指offer】数字在排序数组中出现的次数
转载请注明出处:http://blog.csdn.net/ns_code/article/details/27364557 题目描写叙述: 统计一个数字在排序数组中出现的次数. 输入: 每一个測试案例 ...
- 《剑指offer》数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数. 解析:不要怀疑你的眼睛,也不用怀疑这题目难度,直接干! public class Solution {public int GetNumberOfK(int ...
- 统计一个数字在排序数组中出现的次数
package demo;import java.util.Arrays;/** 题目描述 统计一个数字在排序数组中出现的次数.*/ public class Offer_23 {public int ...
最新文章
- python excel绘图-Python excel 画图
- 十分钟了解 git 那些 “不常用” 命令
- matlab 多个波段,MatLab读取ENVI图像统计多波段图像信息
- 舵机任意角度程序_【舵机初动】基于Mind+ Ardunio入门教程10
- 强化学习MATLAB代码实现
- Kafka 集群搭建
- SPSS 探索性因素分析与验证性因素分析的区别【SPSS 034期】
- Hex Fiend——mac 下 WinHex的完美替代
- 数据科学学习笔记8 --- 分类(有监督的学习)
- java 按英文名排序_输入5种水果的英文名称,用java编写一个程序,输出这些水果名称按照字典出现的先后循序输出?...
- dell计算机自动开机设置,dell台式电脑定时开机设置教程
- 奈奎斯特定理和香农定理
- 互联网快讯:国家植物园在北京正式揭牌;极米Z6X Pro、极米H3S获赞赏;人民币兑日元逼近20大关
- 用3D打印快速制作软生物电子植入物原型,有助于将大脑连接到电脑
- USB电路EMC设计标准电路详解
- oracle显示人民币,如何在ORACLE中实现人民币大写的转换
- XMind: ZEN 快捷键超强盘点
- WPAN、WLAN、WMAN、WWAN无线通讯技术区别
- VMS(VELO) tips[转载]
- 浅谈我的建站经验之导航设置
热门文章
- 微软为 Chrome 带来更流畅的页面滚动效果,来自 Edge
- 分布式监控系统Zabbix3.2给异常添加邮件报警
- 根据服务端生成的WSDL文件创建客户端支持代码的三种方式
- 今天看C++Primer发现的问题
- 13.docker exec
- 146.PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
- 7.override a layout
- java 中wait notify简解
- [2019杭电多校第四场][hdu6616]Divide the Stones
- Python 学习笔记 - 不断更新!