zoukankan      html  css  js  c++  java
  • 剑指offer——数组在排序数组中出现的次数

    题目链接:统计一个数字在排序数组中出现的次数。

    解题思路:

    由于数组有序,所以使用二分查找方法定位k的第一次出现位置和最后一次出现位置

    这里有一个大坑:&&这个符号非常坑爹,&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;所以总是提示数组越界就是在这里!!!!。

     1 public class Solution {
     2     public int GetNumberOfK(int [] array , int k) {
     3         int first = getFirstK(array,k);
     4         int end = getLastK(array,k);
     5         int num = 0;
     6         if(first > -1 && end > -1){
     7              num = end - first + 1;
     8             return num;
     9         }
    10         return num;
    11     }
    12     
    13     public  int getFirstK(int[] array,int k){
    14         int start = 0;
    15         int end = array.length-1;
    16         while(start<=end){
    17             int mid=(start+end)/2;
    18             if(k<array[mid])
    19                 end=mid-1;
    20             else if(k>array[mid])
    21                 start=mid+1;
    22             else{
    23                 if((mid>0&&array[mid-1]!=k)||mid==0)
    24                     return mid;
    25                 else{
    26                     end=mid-1;
    27                 }
    28             }
    29         }
    30         return -1;
    31     }
    32      
    33     public  int getLastK(int[] array,int k){
    34         int start = 0;
    35         int end = array.length-1;
    36         while(start<=end){
    37             int mid=(start+end)/2;
    38             if(k<array[mid])
    39                 end=mid-1;
    40             else if(k>array[mid])
    41                 start=mid+1;
    42             else{
    43                 if((mid<array.length-1&&array[mid+1]!=k)||mid==array.length-1)
    44                     return mid;
    45                 else{
    46                     start=mid+1;
    47                 }
    48             }
    49         }
    50         return -1;
    51     }
    52     
    53 }
  • 相关阅读:
    android开发之socket通信 向PC机发信息
    android:screenOrientation的说明
    java环境变量配置
    maven-webapp项目pom.xml配置
    maven设置本地仓库及配置阿里云镜像
    zxing生成二维码
    jQuery日期获取月和星期
    jquery实现导航栏分级切换
    servlet监听器统计在线人数
    xml配置utf-8编码过滤器
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10873934.html
Copyright © 2011-2022 走看看