题目:数字在排序数组中出现的次数。

统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.

  • int GetNumberOfK(const int* data, int length, int k)

{
    int number = 0;

if(data != nullptr && length > 0)
    {
        int first = GetFirstK(data, length, k, 0, length - 1);
        int last = GetLastK(data, length, k, 0, length - 1);
        
        if(first > -1 && last > -1)
            number = last - first + 1;
    }

return number;
}

// 找到数组中第一个k的下标。如果数组中不存在k,返回-1

  • int GetFirstK(const int* data, int length, int k, int start, int end)

{
    if(start > end)
        return -1;

int middleIndex = (start + end) / 2;
    int middleData = data[middleIndex];

if(middleData == k)
    {
        if((middleIndex > 0 && data[middleIndex - 1] != k) 
            || middleIndex == 0)
            return middleIndex;
        else
            end  = middleIndex - 1;
    }
    else if(middleData > k)
        end = middleIndex - 1;
    else
        start = middleIndex + 1;

return GetFirstK(data, length, k, start, end);
}

// 找到数组中最后一个k的下标。如果数组中不存在k,返回-1

  • int GetLastK(const int* data, int length, int k, int start, int end)

{
    if(start > end)
        return -1;

int middleIndex = (start + end) / 2;
    int middleData = data[middleIndex];

if(middleData == k)
    {
        if((middleIndex < length - 1 && data[middleIndex + 1] != k) 
            || middleIndex == length - 1)
            return middleIndex;
        else
            start  = middleIndex + 1;
    }
    else if(middleData < k)
        start = middleIndex + 1;
    else
        end = middleIndex - 1;

return GetLastK(data, length, k, start, end);
}

在排序数组中查找数字相关推荐

  1. LeetCode-剑指 Offer 53 - I. 在排序数组中查找数字 I

    剑指 Offer 53 - I. 在排序数组中查找数字 I 思路一:二分单边 + 线性扫描 先用一次二分查找找到边界,再再边界里面寻找目标值 class Solution {public:int se ...

  2. 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I

    [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...

  3. 剑指Offer - 面试题53 - I. 在排序数组中查找数字 I(二分查找的变形版本)

    1. 题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2示例 2: 输入: nums = [5,7,7,8, ...

  4. 数组-在排序数组中查找数字(统计出现的次数)

    题意: 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8 ...

  5. 剑指 Offer 53 - I. 在排序数组中查找数字 I(二分法)

    统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10] ...

  6. [剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]

    [问题描述][中等] 统计一个数字在排序数组中出现的次数. 示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2:输入: nums = [5,7, ...

  7. 剑指Offer53-Ⅰ—在排序数组中查找数字

    剑指Offer53-Ⅰ 题意 统计一个数字在排序数组中出现的次数. 解法1-暴力循环 class Solution { public:int search(vector<int>& ...

  8. Leetcode 剑指 Offer 53 - I. 在排序数组中查找数字 I (每日一题 20210928)

    统计一个数字在排序数组中出现的次数.示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2:输入: nums = [5,7,7,8,8,10], t ...

  9. 【剑指offer】面试题53 - 1:在排序数组中查找数字 I(java)

    统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10] ...

  10. 【算法】剑指 Offer 53 - I. 在排序数组中查找数字 I

    1.概述 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target =

最新文章

  1. python之4个小作业
  2. 王者荣耀10连胜,竟然也有人不相信,猎游大神带菜鸡玩家10连胜
  3. Hello Python程序演练
  4. Linux下使用g++编译C++程序——Compiling Cpp
  5. [补档]noip2019集训测试赛(十四)
  6. 如何利用计算机系统原理做文件保护,计算机系统设计原理(影印版).docx
  7. Illegal output or inout port connection (port 'out').
  8. vivox50pro鸿蒙系统,钱包卡包都承包 vivo X50 Pro+多功能NFC玩法多
  9. Android 高级控件ListView用法
  10. REFPROP+matlab拟合物性参数公式
  11. SpringMVC入门简单静态资源处理
  12. win10系统任务栏透明方法
  13. 使用IIS部署若依前后端分离项目
  14. 基于Proteus学习单片机系列(五)——定时器实现电子表
  15. mysql的索引缺点_Sqlite数据库中索引的使用、索引的优缺点
  16. 用函数统计各分数段人数c语言,如何使用Excel函数统计各分数段的人数(五种方法)...
  17. 适合团队工作的软件,大家来看看有没有喜欢的吧
  18. 分析google adsence
  19. dnn分类鸢尾花 pytorch_从实例掌握 pytorch 进行图像分类
  20. SD2.0大会上关于“大型网站架构技术”的讨论(笔记)

热门文章

  1. Opencv笔记(二十一)——傅里叶变换
  2. NO.109 禅道“红火”新年小礼,祝大家2014红红火火~~
  3. SQLite介绍及使用
  4. Java的世界如此美妙
  5. 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!...
  6. 禁用安全模式小方法!!~
  7. 怎么制作铁闸门_咖啡师养成记 | 教你做一杯合格的拿铁咖啡
  8. 1103 Integer Factorization (30 分)深度搜索30分大题要重写
  9. txtv28pw河南某中学_有一种寒冷叫不穿秋裤!河南一中学班主任让学生列队挨个检查秋裤...
  10. Train Problem I(STL)基本运用stack