• 剑指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 }
  • 相关阅读:
    表单的编辑添加和删除 .removeClass() .append() .preAll() .attr('b') document.createElement()
    菜单与内容下拉jQuery
    s2选择框的全选和反选jQuery
    作用域
    当前触发事件的两种方式(onclick) 和 ('id') 获取
    词义分析
    Qt下载地址
    字符集(编码)转换_Qt532_QString
    字符集(编码)转换_Windows
    字符集(编码)转换_Linux
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10873934.html
Copyright © 2020-2023  润新知