剑指Offer-38
来源:互联网 发布:陈忠徐紫砂壶淘宝假货 编辑:程序博客网 时间:2024/05/20 05:57
题目:
统计一个数字在排序数组中出现的次数。
实现
// coding = javapublic class Solution38 { public static int getNumOfK(int[] nums,int k){ if(nums == null || nums.length<1){ return 0; } int first = getFirstK(nums,nums.length,0,nums.length-1,k); int last =getLastK(nums,nums.length,0,nums.length-1,k); if(first>-1 && last>-1){ return (last-first)+1; } return 0; } public static int getFirstK(int[] nums,int length,int start,int end,int k){ if(start>end){ return -1; } int middle_index = (start+end)/2; int middle_data = nums[middle_index]; if(middle_data==k){ if(middle_index>0 && nums[middle_index-1]!=k || middle_index==0){ return middle_index; } else{ end = middle_index-1; } } else if(middle_data>k){ end = middle_index-1; } else { start = middle_index +1; } return getFirstK(nums,length,start,end,k); } public static int getLastK(int[] nums,int length,int start,int end,int k){ if(start>end){ return -1; } int middle_index = (start+end)/2; int middle_data = nums[middle_index]; if(middle_data==k){ if(middle_index<length-1 && nums[middle_index+1]!=k || middle_index==length-1){ return middle_index; } else{ start = middle_index+1; } } else if(middle_data>k){ end = middle_index-1; } else { start = middle_index +1; } return getLastK(nums,length,start,end,k); } public static void main(String[] args){ int[] nums = {1,2,3,3,3,6,8}; int count = getNumOfK(nums,3); System.out.print(count); }}
阅读全文
0 0
- 剑指Offer --> Question 38
- 剑指Offer-38
- 剑指OFFER
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指offer
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指offer
- 剑指Offer
- 剑指offer
- 剑指offer
- 《剑指offer》
- 剑指Offer
- AsyncTask
- Linux下升级JDK
- 使用TortoiseGit处理代码冲突
- dig DNS解析过程
- JVM设置
- 剑指Offer-38
- Linux下安装Git
- final、static、const 的含义
- win shell和macos shell脚本实例
- 【建模必备】遗传算法的基本原理与步骤(交叉)
- geoiplookup命令没有任何输出问题
- Java程序控制语句
- 百度地图Marker隐藏/显示
- IO流中write()和writeShort()的小坑