剑指offer面试题之数字在排序数组中的出现次数
来源:互联网 发布:狄山 知乎 编辑:程序博客网 时间:2024/04/28 07:26
1.题目:
统计一个数字在排序数组中出现的次数。
2,考虑:
(1),遍历一遍,o(n)
(2),二分查找,最坏也是o(n)
(3),定义头尾两个指针,时间复杂度最坏也是o(n)。但一半情况下是n-count,count是出现次数。
3,在牛客网上的编码:
class Solution {public: int GetNumberOfK(vector<int> data ,int k) { /*if (data.empty()) { return 0; } int count = 0; unsigned int i; for (i = 0; i < data.size();) { if (data[i] != k) i++; else count++; } return count;*/ /*if (data.empty()) { return 0; } int count = 0; unsigned int i; int j = data.size(); int mid; int s = 0; for (i = 0; i < j;) { mid = (i+j)/2; if (data[mid] == k) { for (s = mid; s < j; s++) { if (data[s] == k) { count++; } else break; } for (s = mid - 1; s >= 0; s--) { if (data[s] = k) { count++; } else break; } } else if (data[mid] < k) { i = mid + 1; } else j = mid - 1; }*/ if (data.empty()) { return 0; } int i = 0; int m = data.size(); int j = m - 1; for (i; i < m;) { if (data[i] != k) { i++; } else break; } for (j; j >= 0;) { if (data[j] != k) j--; else break; } if (i > j)//这里必须有个判断,因为可能数组中不存在k值得数 { return 0; } int count = j - i + 1; return count; }};
1 0
- 剑指offer面试题之数字在排序数组中的出现次数
- 剑指offer之面试题38数字在排序数组中出现的次数
- [剑指offer][面试题38]数字在排序数组中出现的次数
- 剑指Offer:面试题38 数字在排序数组中出现的次数
- 剑指offer面试题38:数字在排序数组中出现的次数
- 剑指offer 面试题38—数字在排序数组中出现的次数
- 《剑指Offer》学习笔记--面试题38:数字在排序数组中出现的次数
- 【剑指Offer学习】【面试题38:数字在排序数组中出现的次数】
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- 《剑指Offer》面试题:统计一个数字在排序数组中出现的次数
- 剑指offer-面试题38:数字在排序数组中出现的次数
- 剑指offer面试题38:数字在已排序数组中出现的次数
- 剑指offer面试题38:数字在排序数组中出现的次数
- 剑指Offer----面试题38:数字在排序数组中出现的次数
- 剑指Offer面试题38:数字在排序数组中出现的次数 Java实现
- 剑指offer--面试题38:数字在排序数组中出现的次数
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- 剑指offer——面试题38:数字在排序数组中出现的次数
- Hello world!
- Java 中的反射机制
- redis字符串类型的操作
- XUtils 3 框架 介绍
- Git分支管理策略
- 剑指offer面试题之数字在排序数组中的出现次数
- eclipse安装vim插件
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
- 类中重写equals方法
- java数据结构排序之归并排序实现
- 网络流24题之五 圆桌问题 最大匹配
- syblime 2+python3爬虫内容为中文导致error
- 日期选择器:jquery datepicker的使用
- 简易版子线程更新UI