一、题目

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

二、思路

解法一:遍历数组计数

解法二:考虑到时有序数组,所以采用分查找,找到第一个K 和 最后一个K的位置, 二者相减。

三、代码

解法一:

 public int GetNumberOfK(int[] array, int k) {
int count = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == k) {
count++;
}
}
return count;
}

解法二:

public class Solution2 {
public int GetNumberOfK(int[] array, int k) { int lower = getLower(array, k);
int upper = getUpper(array, k);
return upper - lower + 1;
} //获取k第一次出现的下标 public int getLower(int[] array, int k) {
int start = 0, end = array.length - 1;
int mid = (start + end) / 2; while (start <= end) {
if (array[mid] < k) {
start = mid + 1;
} else {
end = mid - 1;
}
mid = (start + end) / 2;
}
return start;
} //获取k最后一次出现的下标
int getUpper(int[] array, int k) {
int start = 0, end = array.length - 1;
int mid = (start + end) / 2; while (start <= end) {
if (array[mid] <= k) {
start = mid + 1;
} else {
end = mid - 1;
}
mid = (start + end) / 2;
} return end;
}
}

---------------------------------------------

参考链接:

https://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2

最新文章

  1. centos 基本调优
  2. BaseAdapter的getView()方法
  3. jsp网站环境搭建
  4. 远程操控软件 TeamViewer for MAC 官方中文版11.0.55321
  5. 边工作边刷题:70天一遍leetcode: day 71-3
  6. ORA-00931: missing identifier ORA-06512: at &quot;SYS.DBMS_UTILITY&quot;
  7. Eclispe 安装PropertiesEditor插件
  8. while循环中不支持循环使用curl
  9. Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决
  10. ruby 知识点
  11. 办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo
  12. maven核心概念--插件和目标
  13. js转换时间戳-转换成 yyyy-MM-dd HH:mm:ss
  14. Node+GitLab实现小程序CI系统
  15. PC版收音机—龙卷风收音机
  16. 3/5/2014 cfb 小心
  17. Java 8 Lambda表达式,让你的代码更简洁
  18. php7.0编译安装
  19. Selenium应用代码(读取mysql表数据登录)
  20. java源码阅读StringBuilder

热门文章

  1. SPSS—回归—曲线估计方程案例解析
  2. SSH整合 第二篇 工程初建
  3. STL中的内存与效率
  4. COM是如何实现STA的
  5. function [eigf,eigv,dof]=laplaceeig(node,elem,problem)
  6. 使用回调方式写POI导入excel工具类
  7. [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]
  8. AbpZero之企业微信---登录(拓展第三方auth授权登录)---第二步:开始逐步实现企业微信登录
  9. c#开发sqlite
  10. c# 协变与抗变