37.数字在排序数组中出现的次数
来源:互联网 发布:多益网络策划笔试题目 编辑:程序博客网 时间:2024/05/17 02:58
题目描述
统计一个数字在排序数组中出现的次数。
最简单的思路就是遍历数组,顺序查找,但是,既然是排序数组,我们自然就想到了二分查找。
/***利用二分查找,先找到开始的索引,再找到最后结束的索引,然后求差值 + 1;**/public class Solution { public int GetNumberOfK(int [] array , int k) { if (array == null || array.length == 0) return 0; int number = 0; int start = getFirstIndex(array, 0, array.length - 1, k); int end = getLastIndex(array, 0, array.length - 1, k); if (start > -1 && end > -1) number = end - start + 1; return number; } public int getFirstIndex(int []array, int start, int end, int target){ if (start > end) //必须要有这个判断,否则可能会发生数组越界异常 return -1; int mid = (start + end) / 2; if (target == array[mid]){ if (mid == start || array[mid - 1] != target) return mid; else end = mid - 1; } else if (target < array[mid]) end = mid - 1; else start = mid + 1; return getFirstIndex(array, start, end, target); } public int getLastIndex(int []array, int start, int end, int target){ if (start > end) return -1; int mid = (start + end) / 2; if (target == array[mid]){ if (mid == end || array[mid + 1] != target) return mid; else start = mid + 1; } else if (target > array[mid]) start = mid + 1; else end = mid - 1; return getLastIndex(array, start, end, target); }}
0 0
- 37.数字在排序数组中出现的次数
- 【数组8】数字在排序数组中出现的次数
- 【数组4】数字在排序数组中出现的次数
- 数组9:数字在排序数组中出现的次数
- 数字在排序数组中出现的次数(数组)
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 统计一个数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- brew
- Introduction to Sound Programming with ALSA
- 成为Java顶尖程序员 ,看这11本书就够了
- Java 访问权限控制:你真的了解 protected 关键字吗?
- 浅谈如何获得布局对象
- 37.数字在排序数组中出现的次数
- 两种常用的字符串的比较方法
- Python3如何支持中文
- js学习之javascript引用类型object--练习模拟Map和数组去重
- 用Lucene创建索引
- [LeetCode]104. Maximum Depth of Binary Tree
- JSP+Servlet实现简单的用户登录注册
- Python中的super用法详解
- 漫谈cup、硬盘、内存和指针的关系