最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python面試不修改數(shù)組找出重復(fù)的數(shù)字

 更新時(shí)間:2022年05月20日 14:18:32   作者:宇宙之一粟  
這篇文章主要為大家介紹了不修改數(shù)組找出重復(fù)的數(shù)字Python實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

數(shù)組中重復(fù)的數(shù)字

在上一篇博客中劍指Offer之面試題3: 數(shù)組中重復(fù)的數(shù)字中,其實(shí)能發(fā)現(xiàn)這類(lèi)題目的關(guān)鍵就是一邊遍歷數(shù)組一邊查滿足條件的元素。

然后我們?cè)诓┛?用最復(fù)雜的方式學(xué)會(huì)數(shù)組(Python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組)?這篇博客中介紹了數(shù)組這一結(jié)構(gòu)的本質(zhì),并自己動(dòng)手實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)數(shù)組。

今天我們介紹一下另一道來(lái)自《劍指Offer》的關(guān)于數(shù)組的面試題——不修改數(shù)組找出重復(fù)的數(shù)字。

不修改數(shù)組找出重復(fù)的數(shù)字

題目二:不修改數(shù)組找出重復(fù)的數(shù)字

給定一個(gè)長(zhǎng)度為 n+1 的數(shù)組里的所有數(shù)字都在 0∼n 的范圍內(nèi),所以數(shù)組中至少有一個(gè)數(shù)字是重復(fù)的。

請(qǐng)找出數(shù)組中任意一個(gè)重復(fù)的數(shù)字,但不能修改輸入的數(shù)組。

樣例:

給定長(zhǎng)度為8的數(shù)組 nums = [2, 3, 5, 4,3, 2, 6,7]

那么輸出重復(fù)的數(shù)字2或者3

思路

首先我們得關(guān)注到,題目要求是:不修改數(shù)組,然后還是 ?? 返回任意一個(gè)重復(fù)的數(shù)字?? 。所以解題思路相比而言變少了:

1.哈希表:跟上一題一樣,本題也可以創(chuàng)建一個(gè)哈希表,如果原數(shù)組的每個(gè)數(shù)字第一次出現(xiàn),就把他放到哈希表中去,即原數(shù)組大小為m的數(shù)字應(yīng)該放到哈希表下標(biāo)為m的位置上??臻g復(fù)雜度是 $O(n)$ 。

2.二分法:那么有沒(méi)有不用空間復(fù)雜度 $O(n)$ 的算法。假設(shè)沒(méi)有重復(fù)數(shù),那么??1~n?? 之間,每個(gè)數(shù)都只能出現(xiàn)一次。而題目中,這個(gè)數(shù)組至少有一個(gè)數(shù)字重復(fù),即出現(xiàn)的次數(shù)大于1。

利用二分的思想:把 ??1~n?? 的數(shù)字從中間數(shù)字 m 開(kāi)始分為兩部分,前一半為 1~ m,后面一半為 ??m+1 ~n???,如果 ??1~m?? 中的數(shù)字在數(shù)組中出現(xiàn)的次數(shù)大于 m,那么這一半必定有重復(fù)的數(shù)字;

否則,那么另一部分必定含有重復(fù)數(shù)字。接著我們,繼續(xù)對(duì)含有重復(fù)數(shù)字的區(qū)間一分為二,直到找到重復(fù)的數(shù)字。

思路一:哈希表

def find_duplicated_num(nums):
    """hash_map"""
    hash_map = dict()
    for i, val in enumerate(nums):
        if val in hash_map:
            return val
        hash_map[val] = i
    return False

思路二:二分法

def reduce_inter(nums2, left, right):
    """ """
    mid = (left + right) // 2
    count = 0
    length = len(nums2)
    for i in range(length):
        if (nums2[i] >= left) and (nums2[i] <= mid):
            count += 1
    if count > mid - left + 1:
        return left, mid
    else:
        return mid+1, right


def find_duplicated_num2(nums2):
    left, right = 1, len(nums2) - 1
    while left != right:
        left, right = reduce_inter(nums2, left, right)
    return left

測(cè)試

nums = [2, 3, 5, 4, 3, 2, 6, 7]
# nums_n = [5, 4, 3, 2, 6, 7]
print("思路一測(cè)試結(jié)果: ", find_duplicated_num(nums))
print("思路二測(cè)試結(jié)果: ", find_duplicated_num2(nums))

結(jié)果

思路一測(cè)試結(jié)果:  3
思路二測(cè)試結(jié)果:  3

總結(jié)

其實(shí),這種算法不能保證找出所有重復(fù)的數(shù)字,比如不能找出[2, 3, 5, 4, 3, 2, 6, 7]重復(fù)數(shù)字2。

以上就是不修改數(shù)組找出重復(fù)的數(shù)字Python實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于python找出重復(fù)數(shù)字的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python發(fā)送網(wǎng)絡(luò)請(qǐng)求(requests)

    Python發(fā)送網(wǎng)絡(luò)請(qǐng)求(requests)

    這篇文章主要介紹了Python發(fā)送網(wǎng)絡(luò)請(qǐng)求(requests),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 解決pyqt5中QToolButton無(wú)法使用的問(wèn)題

    解決pyqt5中QToolButton無(wú)法使用的問(wèn)題

    今天小編就為大家分享一篇解決pyqt5中QToolButton無(wú)法使用的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python argparse模塊使用方法解析

    Python argparse模塊使用方法解析

    這篇文章主要介紹了Python argparse模塊使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python eval()與exec()函數(shù)使用介紹

    Python eval()與exec()函數(shù)使用介紹

    exec函數(shù)執(zhí)行的是python語(yǔ)句,沒(méi)有返回值,eval函數(shù)執(zhí)行的是python表達(dá)式,有返回值,exec函數(shù)和eval函數(shù)都可以傳入命名空間作為參數(shù),本文給大家介紹下Python eval()和exec()函數(shù),感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 一文帶你了解Python與svg之間的操作

    一文帶你了解Python與svg之間的操作

    svgwrite是一個(gè)?Python?庫(kù),用于生成簡(jiǎn)單的?SVG?圖片。它提供了一組類(lèi)似于繪圖的?API,使用者可以在?SVG?畫(huà)布上畫(huà)線、矩形、圓等圖形。本文主要介紹了如何利用svgwrite進(jìn)行SVG圖片的操作,需要的可以參考一下
    2023-01-01
  • Python利用matplotlib模塊數(shù)據(jù)可視化繪制3D圖

    Python利用matplotlib模塊數(shù)據(jù)可視化繪制3D圖

    matplotlib是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地行制圖,下面這篇文章主要給大家介紹了關(guān)于Python利用matplotlib模塊數(shù)據(jù)可視化實(shí)現(xiàn)3D圖的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • 使用Python機(jī)器學(xué)習(xí)降低靜態(tài)日志噪聲

    使用Python機(jī)器學(xué)習(xí)降低靜態(tài)日志噪聲

    今天小編就為大家分享一篇關(guān)于使用Python和機(jī)器學(xué)習(xí)的靜態(tài)日志噪聲的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-09-09
  • Python中使用filter過(guò)濾列表的一個(gè)小技巧分享

    Python中使用filter過(guò)濾列表的一個(gè)小技巧分享

    這篇文章主要介紹了Python中使用filter過(guò)濾列表的一個(gè)小技巧分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python人工智能深度學(xué)習(xí)算法優(yōu)化

    python人工智能深度學(xué)習(xí)算法優(yōu)化

    這篇文章主要為大家介紹了python人工智能深度學(xué)習(xí)關(guān)于算法優(yōu)化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python中f字符串以及其常見(jiàn)用法總結(jié)

    python中f字符串以及其常見(jiàn)用法總結(jié)

    python中的f是format函數(shù)的縮寫(xiě),用于格式化輸出,下面這篇文章主要給大家介紹了關(guān)于python中f字符串以及其常見(jiàn)用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評(píng)論

泾阳县| 昌江| 蓬溪县| 沐川县| 顺昌县| 紫金县| 阿克苏市| 越西县| 定兴县| 丘北县| 夏河县| 多伦县| 绥芬河市| 玛纳斯县| 库尔勒市| 屏东市| 海兴县| 阿荣旗| 腾冲县| 泾阳县| 炎陵县| 上杭县| 阳原县| 都江堰市| 邵东县| 开化县| 化德县| 黄平县| 桃源县| 怀远县| 洮南市| 洛南县| 余庆县| 淮滨县| 奉贤区| 电白县| 博爱县| 阿勒泰市| 荆州市| 大厂| 明水县|