/**
* 题目:在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
* 解法:使用二分查找的方法分别找出给定数字的开始和结束位置,最坏情况下时间复杂度为O(logn)
*/#include<stdio.h>
#include<stdlib.h>
//全局变量
int arr[] = {0,1,1,2,2,2,2,4,4,4}; //测试数组
int size = sizeof(arr) / sizeof(*arr); //数组元素个数
int getUpper(int arr[], int key){//获取某个元素最后出现位置 int low = 0, high = size - 1;//其实是一个递归迭代 while(low < high){int mid = (low + high + 1) / 2;if(arr[mid] <= key)//当要查找的值比中位数大于等于时,把查找的低位限制为mid low = mid;else//当要找的值比 中位数小时,,把查找的高位限制为mid-1 high = mid - 1;          }
//    返回最后出现位置 return low;
}
int getLower(int arr[], int key){//获取某个元素第一次出现位置 int low = 0, high = size - 1;while(low < high){int mid = (low + high) / 2;//当要找的值比 中位数小于等于时,,把查找的高位限制为mid+1 if(arr[mid] >= key)high = mid;else//当要找的值比 中位数大时,,把查找的低位限制为mid+1 low = mid + 1;           }    //返回第一次出现位置 return low;
}
int main(){for(int i = 0; i < size; i ++)printf("%d 出现 %d 次\n",arr[i],getUpper(arr,arr[i]) - getLower(arr,arr[i]) + 1);getchar();
}

在排序数组中,找出给定数字的出现次数相关推荐

  1. bat从数组中找出相同数字并删除_找到所有数组中消失的数字

    题目描述 给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. ...

  2. bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...

    原文地址:https://mp.weixin.qq.com/s/qCHkzs4JPOipB-ZzqrfbeQ 作者: Hollis 你知道HashMap中hash方法的具体实现吗? 你知道HashTa ...

  3. 数据结构与算法--有序数组中找出和为s的两个数字

    有序数组中找和为s的两个数字 题目:输入一个递增排序的数组array, 和一个数字s, 在数组中找出两个数,使得这两个数的和是s,如果有多对,输出一对即可. 最简单方案 双循环,每次获取一个数据,和数 ...

  4. 编写一个程序,从10亿个数字的数组中找出100个最大的数字

    本文翻译自:Write a program to find 100 largest numbers out of an array of 1 billion numbers I recently at ...

  5. JS实现 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    题目:(JS实现) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 四种方法如下: 方法一:暴力破解法,和值匹配 //暴力 ...

  6. (python)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数。

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nu ...

  7. 第1题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标

    package com.leetcode; import java.util.ArrayList; import java.util.HashMap; import java.util.List; i ...

  8. python查找数列中重复数字_在数组中找出重复的数字(异或法)

    购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...

  9. 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。

    问: /** 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...

  10. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标

    题目链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-2/ 给定一个整数数组 nums ...

最新文章

  1. idea的优秀博客推荐
  2. VGA12h与VGA寄存器
  3. 在NVIDIA Jetson Xavier NX上把yolov4-deepsort的模型pb模型使用tensorflow-onnx和onnx-tensorrt工具最终转换为tensorrt模型
  4. PHP实现图片马赛克效果
  5. 对微型计算机工作影响最小的因数是,(已)保护试题9
  6. .NET 6新特性试用 | record struct
  7. 初识spring-boot
  8. python pyqt5 线程 暂停 重启_PyQt5 线程阻塞?
  9. vue element Form-Item prop
  10. 更改路由器的外网IP
  11. Vue.js 学习笔记 七 控制样式
  12. redis内存数据的持久化方式
  13. 如何使用高大上的方法调参数
  14. android xutils3 jar,Android全能开源项目xUtils3开发教程、简单封装
  15. mysql 唯一约束和唯一索引_谈谈唯一约束和唯一索引
  16. 物理搬砖问题_搬砖问题 - jeff_nie - 博客园
  17. 罗永浩:做直播带货很赚钱,一晚上利润轻松几百万 比卖锤子手机过瘾
  18. 你还记得大明湖畔的oop原则吗?
  19. 月夜无声,谁与我醉今宵
  20. Kmeans、Kmeans++、Birch和KNN四种聚类算法对二维坐标点的聚类分析对比实验

热门文章

  1. 深度神经网络分布式训练指引
  2. 拆分php中 $i++ ++$i PHP中的i++与++i的区别及效率
  3. Linux必备命令 - 常用命令集
  4. 处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
  5. 词法分析(1)...
  6. 为ashx文件启用session管理
  7. Java NIO 详解(一)
  8. 冒泡排序的实现和优化及其与插入,选择排序的比较
  9. Python查看文章中每个单词的出现频率
  10. Android--读取通讯录并添加联系人