zoukankan      html  css  js  c++  java
  • 剑指offer三十七之数字在排序数组中出现的次数

    一、题目

      统计一个数字在排序数组中出现的次数。

    二、思路

    解法一:遍历数组计数

    解法二:考虑到时有序数组,所以采用分查找,找到第一个K 和 最后一个K的位置, 二者相减。

    三、代码

    解法一:

     public int GetNumberOfK(int[] array, int k) {
            int count = 0;
            for (int i = 0; i < array.length; i++) {
                if (array[i] == k) {
                    count++;
                }
            }
            return count;
        }
    View Code

    解法二:

    public class Solution2 {
            public int GetNumberOfK(int[] array, int k) {
    
                    int lower = getLower(array, k);
                    int upper = getUpper(array, k);
                    return upper - lower + 1;
                }
    
                //获取k第一次出现的下标
    
          public  int getLower(int[] array, int k) {
                int start = 0, end = array.length - 1;
                int mid = (start + end) / 2;
    
                while (start <= end) {
                    if (array[mid] < k) {
                        start = mid + 1;
                    } else {
                        end = mid - 1;
                    }
                    mid = (start + end) / 2;
                }
                return start;
            }
    
            //获取k最后一次出现的下标
            int getUpper(int[] array, int k) {
                int start = 0, end = array.length - 1;
                int mid = (start + end) / 2;
    
                while (start <= end) {
                    if (array[mid] <= k) {
                        start = mid + 1;
                    } else {
                        end = mid - 1;
                    }
                    mid = (start + end) / 2;
                }
    
                return end;
            }
        }
    View Code

    ---------------------------------------------

    参考链接:

    https://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2

  • 相关阅读:
    网络爬虫之第一章网络请求
    rabbitmq学习(一) —— 安装篇
    jenkins自动构建部署
    httpclient初步封装
    谈谈“拥抱变化”
    mongo对分组数据进行排序
    困兽
    go语言——goland中项目目录及编译说明
    最长回文子串
    java中关于锁知识的整理
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7656288.html
Copyright © 2011-2022 走看看