劍指Offer(三十七):數字在排序數組中出現的次數

劍指Offer(三十七):數字在排序數組中出現的次數

搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨python

csdn:https://blog.csdn.net/baidu_31657889/git

github:https://github.com/aimi-cn/AILearnersgithub

1、引子

這個系列是我在牛客網上刷《劍指Offer》的刷題筆記,旨在提高下本身的算法能力。
查看完整的劍指Offer算法題解析請點擊CSDN和github連接:
劍指Offer完整習題解析CSDN地址
github地址算法

2、題目

統計一個數字在排序數組中出現的次數。編程

一、思路

看見有序,確定就是二分查找了數組

作法就是使用二分法找到數字在數組中出現的第一個位置,再利用二分法找到數字在數組中出現的最後一個位置。時間複雜度爲O(logn + logn),最終的時間複雜度爲O(logn)。微信

舉個例子,找到數字k在數組data中出現的次數。機器學習

數組data中,數字k出現的第一個位置:函數

咱們對數組data進行二分,若是數組中間的數字小於k,說明k應該出如今中間位置的右邊;若是數組中間的數字大於k,說明k應該出如今中間位置的左邊;若是數組中間的數字等於k,而且中間位置的前一個數字不等於k,說明這個中間數字就是數字k出現的第一個位置。學習

同理,數字k出現的最後一個位置,也是這樣找的。可是判斷少有不一樣。咱們使用兩個函數分別得到他們。

二、編程實現

python

代碼實現方案:python有自帶的方法進行查找~

# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        # write code here
        return data.count(k)複製代碼

AIMI-CN AI學習交流羣【1015286623】 獲取更多AI資料

分享技術,樂享生活:咱們的公衆號計算機視覺這件小事每週推送「AI」系列資訊類文章,歡迎您的關注!

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索