劍指Offer(37):數字在排序數組中出現的次數
一、引子
這個系列是我在牛客網上刷《劍指Offer》的刷題筆記,旨在提升下自己的算法能力。
二、題目
統計一個數字在排序數組中出現的次數。
1、思路
看見有序,肯定就是二分查找了
做法就是使用二分法找到數字在數組中出現的第一個位置,再利用二分法找到數字在數組中出現的最后一個位置。時間復雜度為O(logn + logn),最終的時間復雜度為O(logn)。
舉個例子,找到數字k在數組data中出現的次數。
數組data中,數字k出現的第一個位置:
我們對數組data進行二分,如果數組中間的數字小于k,說明k應該出現在中間位置的右邊;如果數組中間的數字大于k,說明k應該出現在中間位置的左邊;如果數組中間的數字等于k,并且中間位置的前一個數字不等于k,說明這個中間數字就是數字k出現的第一個位置。
同理,數字k出現的最后一個位置,也是這樣找的。但是判斷少有不同。我們使用兩個函數分別獲得他們。
2、編程實現
代碼實現方案:
python有自帶的方法進行查找~
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)
分享技術,樂享生活:我們的公眾號計算機視覺這件小事每周推送“AI”系列資訊類文章,歡迎您的關注!
本文由博客一文多發平臺 OpenWrite 發布!
審核編輯 黃昊宇
-
人工智能
+關注
關注
1804文章
48737瀏覽量
246669 -
機器學習
+關注
關注
66文章
8492瀏覽量
134122 -
深度學習
+關注
關注
73文章
5555瀏覽量
122498
發布評論請先 登錄
詳解Linux sort命令之掌握排序技巧與實用案例
TimSort:一個在標準函數庫中廣泛使用的排序算法
使用ADS1256中出現重新上電會出現讀取AD值不一樣的情況,怎么解決?
指針數組和二維數組有沒有區別
TPA3110D2在調試的過程中出現的疑問求解
數控車床m99指令的用法
TAS6424的開關頻率2.MHz 在EMC CE電壓法測試中出現超標情況,請問如何改善?
vca810作為中間級,在寬帶直流放大器調試中出現自激現象怎么解決?
labview字符串數組轉化為數值數組
面試常考+1:函數指針與指針函數、數組指針與指針數組

NAND Flash的擦寫次數介紹
for循環最大能運行次數
SMT錫膏焊接中出現錫珠的因素有哪些?

SMT貼片加工中出現元器件移位的原因有哪些?

評論