1. 题目描述
统计一个数字在升序数组中出现的次数。
题目分析:
- 升序数组中查找一个数,可以使用查找方法,比如二分查找,排序查找,这里选择二分查找
- 查找到这个数后,因为数组是有序的,所以找出现的次数只能是在该数的左边或者是右边
- 定义变量计数
2. 代码实现
import java.util.Arrays;
public class Solution {
public int GetNumberOfK(int [] array , int k) {
//定义计数器
/*
1.升序数组
2.一个数字在数字中的出现的次数
*/
//二分查找,直接调用二分查找函数,返回的是查找后的第一个出现的数的数组下标
int index = Arrays.binarySearch(array,k);
int count = 1;
//判断下:,数组下标是否符合条件
if(index < 0){
return 0;
}
//下面的是已经找到index下标相等的数
//现在通过二分查找已经找到和K相等的数,现在判断数组的两边是否有和K相等的数
//定义便利,技术count
//对index右边进行判断,是否相等
for(int i = index + 1 ; i < array.length && array[i] == k;i++){
count ++;
}
//判断index左边是否和array[index]是否相等
for(int j = index - 1;j >= 0 && array[j] == k;j--){
count ++;
}
return count;
}
}
3. 总结
- 本题比较简单,数组中的查找,二分法
- 加点难度,无序的数组,首先要排序,也不难
- 数据结构与算法分析的基本算法要会,下面开始二叉树的复习了,也是比较麻烦的
- 今天是1024程序员的节日,程序员节日快乐!坚持!