欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數(shù)組中的?k-diff?數(shù)對(duì)例題解析

 更新時(shí)間:2022年06月17日 10:00:40   作者:??盆友圈的小可愛(ài)????  
這篇文章主要介紹了python數(shù)組中的?k-diff?數(shù)對(duì)例題解析,文章根據(jù)題目?jī)?nèi)容對(duì)其進(jìn)行分析以此展開(kāi)主題內(nèi)容,感興趣的小伙伴可以參考一下下面文章詳情

一、題目描述

題目?jī)?nèi)容:

題目示例:

題目解析:

  • 1 <= nums.length <= 104
  • -107 <= nums[i] <= 107
  • 0 <= k <= 107

二、思路分析

我們拿到本題,讀取題意要求在一組整數(shù)數(shù)組中,求出差值為k的數(shù)對(duì)對(duì)數(shù)k-diff。在思考如何解答該題之前,需要明確如下幾點(diǎn)細(xì)節(jié):

  • nums數(shù)組元素都是整數(shù)
  • 索引位置i與位置j,不能相等
  • k-diff數(shù)對(duì)關(guān)系:nums[i] - nums[j] = k -> nums[i] = nums[j] + k -〉 nums[i] - k = nums[j]
  • k-diff數(shù)對(duì),存在相同數(shù)對(duì)情況,但結(jié)果只取1次

因此,我們的對(duì)題目中進(jìn)行詳細(xì)了解了,因?yàn)闀?huì)排除重復(fù)的數(shù)對(duì),我們很容易想哈希表來(lái)構(gòu)建

方法一:構(gòu)建哈希表

根據(jù)上述思路,我們使用python代碼能快速實(shí)現(xiàn),代碼如下:

class Solution(object):
    def findPairs(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        ans = set()
        numset = set()
        for num in nums:
            if num - k in numset:
                ans.add(num-k)
            if num + k in numset:
                ans.add(num)
            numset.add(num)
        return len(ans)
  • 數(shù)對(duì)中重復(fù)場(chǎng)景如示例一中差值為k=1,(1,3) & (3,1)視為一種情況,則要定義兩個(gè)哈希表來(lái)儲(chǔ)存
  • 哈希表可以通過(guò)字典k-value或者集合set(),本題無(wú)需考慮索引關(guān)系定義ans,numset兩個(gè)集合
  • 當(dāng) nums[i] > nums[j],則nums[j] = nums[i] - k在numset中,取最小的那一個(gè)則ans.add(nums[i]-k),
  • 當(dāng) nuns[i] < nums[j],則nums[j] = nums[i] + k 在numset中,取較小的那一個(gè)則ans.add(nums[i])

方法二:雙指針

image.png

根據(jù)上述思路,使用python代碼實(shí)現(xiàn),代碼如下:

class Solution(object):
    def findPairs(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        nums.sort()
        ans = 0
        j = 0
        for i in range(len(nums)):
            if i == 0 or nums[i] != nums[i-1]:
                while j < len(nums) and (nums[j] < nums[i] + k or j <= i):
                    j +=1
                if j < len(nums) and nums[j] == nums[i] + k:
                    ans +=1
        return ans
  • 首先對(duì)nums數(shù)組中的元素按照從低到高的順序排列
  • 在遞增的數(shù)組中,由于雙指針 i!=j,因此i指針一定是小于j的
  • 枚舉查找的判斷的條件 nums[j] < nums[i]+k,指針j則往后移動(dòng)
  • 當(dāng)nums[j] = nums[i] + k 時(shí),則對(duì)數(shù)次數(shù)+1

三、總結(jié)

本題可以使用哈希方法要使用兩個(gè)哈希表,屬于犧牲空間換取效率。雙指針?lè)椒?,雖然沒(méi)有用額外的空間,但是速度較于方法一慢一點(diǎn)。

我們用第一種方法,AC提交記錄如下:

  • 時(shí)間復(fù)雜度O(n),n為nums長(zhǎng)度
  • 空間復(fù)雜度O(n),需要使用哈希表,n為nums長(zhǎng)度

到此這篇關(guān)于python數(shù)組中的 k-diff 數(shù)對(duì)例題解析的文章就介紹到這了,更多相關(guān)python k-diff 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)可視化之用Matplotlib繪制常用圖形

    Python數(shù)據(jù)可視化之用Matplotlib繪制常用圖形

    Matplotlib能夠繪制折線圖、散點(diǎn)圖、柱狀圖、直方圖、餅圖. 我們需要知道不同的統(tǒng)計(jì)圖的意義,以此來(lái)決定選擇哪種統(tǒng)計(jì)圖來(lái)呈現(xiàn)我們的數(shù)據(jù),今天就帶大家詳細(xì)了解如何繪制這些常用圖形,需要的朋友可以參考下
    2021-06-06
  • Python利用第三方模塊實(shí)現(xiàn)壓縮css文件

    Python利用第三方模塊實(shí)現(xiàn)壓縮css文件

    在?Python?中可以使用多種方法來(lái)壓縮?CSS?文件。其中一種流行的方法是使用?csscompressor?庫(kù),這個(gè)庫(kù)可以幫助你壓縮?CSS?代碼,下文就來(lái)和大家詳細(xì)聊聊
    2023-01-01
  • python爬蟲(chóng)parsel-css選擇器的具體用法

    python爬蟲(chóng)parsel-css選擇器的具體用法

    本文主要介紹了python爬蟲(chóng)parsel-css選擇器的具體用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python 爬蟲(chóng)模擬登陸知乎

    Python 爬蟲(chóng)模擬登陸知乎

    這篇文章主要介紹了Python 爬蟲(chóng)模擬登陸知乎的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • tf.concat中axis的含義與使用詳解

    tf.concat中axis的含義與使用詳解

    今天小編就為大家分享一篇tf.concat中axis的含義與使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python uuid模塊使用實(shí)例

    python uuid模塊使用實(shí)例

    這篇文章主要介紹了python uuid模塊使用實(shí)例,本文給出簡(jiǎn)單使用示例,講解uuid1、uuid3、 uuid4、 uuid5這幾個(gè)方法,需要的朋友可以參考下
    2015-04-04
  • 社區(qū)版pycharm創(chuàng)建django項(xiàng)目的方法(pycharm的newproject左側(cè)沒(méi)有項(xiàng)目選項(xiàng))

    社區(qū)版pycharm創(chuàng)建django項(xiàng)目的方法(pycharm的newproject左側(cè)沒(méi)有項(xiàng)目選項(xiàng))

    pycharm的newproject左側(cè)沒(méi)有出現(xiàn)項(xiàng)目選項(xiàng)的情況下,創(chuàng)建Django項(xiàng)目的解決方法./社區(qū)版pycharm創(chuàng)建django項(xiàng)目的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • 詳解Python中行列式的計(jì)算

    詳解Python中行列式的計(jì)算

    矩陣的行列式是僅與方陣相關(guān)的標(biāo)量,?這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)行列式的計(jì)算,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • python之pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)完整代碼

    python之pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)完整代碼

    這篇文章主要為大家詳細(xì)介紹了python之pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)完整代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼

    Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼

    當(dāng)有多個(gè)?IO?密集型的任務(wù)要被處理時(shí),我們自然而然會(huì)想到多線程。而線程池的實(shí)現(xiàn)也很簡(jiǎn)單,因?yàn)?Python?提供了一個(gè)標(biāo)準(zhǔn)庫(kù)?concurrent.futures,已經(jīng)內(nèi)置了對(duì)線程池的支持。所以本篇文章,我們就來(lái)詳細(xì)介紹一下該模塊的用法
    2022-07-07

最新評(píng)論