【剑指offer】数字在排序数组中出现的次数

原创 2018年04月15日 13:35:51

题目描述

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

思路:

这个题最优解法是直接用两个二分法找左右两边的index,所以,这里我们直接找k-0.5, k+0.5的index就可以解决问题。但是这里要特别注意边界条件,是while left <= right

# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        # write code here
        left = self.helper(data,k-0.5)
        right = self.helper(data, k+0.5)
        return right-left
    
    
    def helper(self, data, k):
        left = 0
        right = len(data)-1
        mid = (left+right)//2
        while left <= right:
            if data[mid] < k:
                left = mid+1
            elif data[mid] > k:
                right = mid-1
            mid = (left+right)//2
        return mid

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38111819/article/details/79944843

数组

本门课程是java基础课程之一,介绍数组的概念和使用。
  • 2017年01月30日 17:30

《剑指Offer》面试题:统计一个数字在排序数组中出现的次数

题目 题目描述: 统计一个数字在排序数组中出现的次数。 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小。1...
  • u010412719
  • u010412719
  • 2015-09-12 22:23:12
  • 1328

剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)

PS:在前几天的面试中,被问到了这个题。然而当时只能用最低效的方法来解。问题描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2...
  • lilianforever
  • lilianforever
  • 2016-07-08 11:34:50
  • 1348

剑指Offer面试题56:数组中数字出现的次数

/* *面试题56:数组中数字出现的次数:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 */ //num1,num2分别为长度为1的数组。传出参数 /...
  • lwl2014100338
  • lwl2014100338
  • 2018-01-20 12:58:24
  • 51

数字在排序数组中出现的次数(剑指offer面试题56)

题目描述 统计一个数字在排序数组中出现的次数。 题目思路: 1)常规思路:对该数字在数组中遍历,计数出现次数 2)改进:既然是一个排序数组,很自然就可以想到二分查找。 用二分查找...
  • sxs11
  • sxs11
  • 2017-07-20 01:38:10
  • 115

剑指Offer面试题29(java版):数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现5次,超过数组长度的一半,因此输出2....
  • jsqfengbao
  • jsqfengbao
  • 2015-08-08 19:25:35
  • 1813

剑指Offer(第二版)面试题56:数组中数字出现的次数

剑指Offer(第二版)面试题56:数组中数字出现的次数
  • qq_25827845
  • qq_25827845
  • 2017-06-22 20:07:35
  • 1481

数组中出现次数超过一半的数字||剑指offer

题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2...
  • jiangjieqazwsx
  • jiangjieqazwsx
  • 2016-03-21 17:38:02
  • 292

剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

腾讯 2015秋招 编程题4:微信红包中个数超过总数一半的红包金额 题目描述 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一...
  • yanglr2010
  • yanglr2010
  • 2016-05-14 22:24:26
  • 1403

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

题目:统计一个数字在排序数组中出现的次数。例如输入输入排序数组{1,2,3,3,4,5}和数字3,输出2. 思路:使用二分查找法,时间复杂度O(logN) package offer; /** ...
  • u013238950
  • u013238950
  • 2016-03-12 20:13:01
  • 1449
收藏助手
不良信息举报
您举报文章:【剑指offer】数字在排序数组中出现的次数
举报原因:
原因补充:

(最多只允许输入30个字)