数字在排序数组中出现的次数
来源:互联网 发布:360软件助手苹果 编辑:程序博客网 时间:2024/06/03 22:29
统计一个数字在排序数组中出现的次数。
package com.google.android;public class CountK {public static void main(String[] args) {int[] data = { 1, 2, 3, 3, 3, 3, 4, 5 };int count = getCountK(data, 3);System.out.println(count);}private static int getCountK(int[] data, int k) {if (data == null || data.length == 0) {return 0;}int firstK = getFirstK(data, 0, data.length - 1, k);int lastK = getLastK(data, 0, data.length - 1, k);int count = 0;if (firstK > -1 && lastK > -1) {count = lastK - firstK+1;}return count;}private static int getLastK(int[] data, int start, int end, int k) {if (start > end) {return -1;}int middleIndex = (start + end) / 2;int middleData = data[middleIndex];if (middleData == k) {// 后边界if ((middleIndex < data.length - 1 && data[middleIndex + 1] != k)|| middleIndex == data.length - 1) {return middleIndex;} else {start = middleIndex + 1;}} else if (middleData > k) {start = middleIndex + 1;} else {end = middleIndex - 1;}return getLastK(data, start, end, k);}private static int getFirstK(int[] data, int start, int end, int k) {if (start > end) {return -1;}int middleIndex = (start + end) / 2;int middleData = data[middleIndex];if (middleData == k) {if (middleIndex > 0 && data[middleIndex - 1] != k) {return middleIndex;} else {end = middleIndex - 1;}} else if (middleData > k) {end = middleIndex - 1;} else {start = middleIndex + 1;}return getFirstK(data, start, end, k);}}
0 0
- 【数组8】数字在排序数组中出现的次数
- 【数组4】数字在排序数组中出现的次数
- 数组9:数字在排序数组中出现的次数
- 数字在排序数组中出现的次数(数组)
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 统计一个数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 2014年10月8日
- 动态背景及surfaceview添加控件
- 解读Intel为何在移动领域遭遇瓶颈?
- How to get Joomla Website to Load in 1.29 Seconds
- 盘点那些年被苹果扼杀的传统和产品
- 数字在排序数组中出现的次数
- 数据结构之双亲表示法建树和操作
- jaxb的优点和用法
- DSP学习总结——项目设计流程
- CentOS下升级python版本
- RAC+ADG apply PSU+PATCH
- 微信营销的关键——家居
- 深度解读3D打印巨头Stratasys为何1亿美金收购Grabcad
- 深入C++ new/delete,malloc/free解析