亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python每日一練之刪除有序數(shù)組中的重復(fù)項(xiàng)

 更新時(shí)間:2025年11月05日 10:50:40   作者:會(huì)飛的云1024  
在Python中刪除數(shù)組中的重復(fù)項(xiàng)可以通過多種方法實(shí)現(xiàn),這篇文章主要介紹了Python每日一練之刪除有序數(shù)組中的重復(fù)項(xiàng)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 問題描述

給你一個(gè)有序數(shù)組 nums ,請(qǐng)你 原地 刪除重復(fù)出現(xiàn)的元素,使得出現(xiàn)次數(shù)超過兩次的元素只出現(xiàn)兩次 ,返回刪除后數(shù)組的新長(zhǎng)度。

不要使用額外的數(shù)組空間,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。

示例 1:

輸入:nums = [1,1,1,2,2,3] 輸出:5, nums = [1,1,2,2,3] 解釋:函數(shù)應(yīng)返回新長(zhǎng)度 length = 5, 并且原數(shù)組的前五個(gè)元素被修改為 1, 1, 2, 2, 3。 不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。

示例 2:

輸入:nums = [0,0,1,1,1,1,2,3,3] 輸出:7, nums = [0,0,1,1,2,3,3] 解釋:函數(shù)應(yīng)返回新長(zhǎng)度 length = 7, 并且原數(shù)組的前七個(gè)元素被修改為 0, 0, 1, 1, 2, 3, 3。不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。

2. 問題分析

使用滑動(dòng)窗口+刪除元素的方法。

對(duì)于nums = [1,1,1,2,2,3]

(1)窗口[1,1,1], 長(zhǎng)度=3>2,刪除第3個(gè)1---->[1,1,2,2,3]

(2)窗口[2,2],長(zhǎng)度=2<=2,保留

(3)窗口[3],長(zhǎng)度=1<=2,保留

結(jié)果:[1,1,2,2,3], 長(zhǎng)度=5、

3. 算法思路

思路:

(1)定義窗口: beginIndex和endIndex標(biāo)記相同元素的起始和結(jié)束位置

(2)遍歷數(shù)組:用endIndex向右擴(kuò)展,找到相同元素的連續(xù)區(qū)間

(3)處理重復(fù):當(dāng)遇到不同元素時(shí),檢查當(dāng)前連續(xù)區(qū)間的長(zhǎng)度

如果長(zhǎng)度>2,刪除多余的元素

如果長(zhǎng)度<=2,直接移動(dòng)指針

4. 代碼實(shí)現(xiàn)

from typing import List

class Solution:
    def remove(self, nums: List[int]) -> int:
        if len(nums) <= 2:
            return len(nums)

        slow = 2  # 從第三個(gè)位置開始檢查

        for fast in range(2, len(nums)):
            # 如果當(dāng)前元素不等于slow指針前兩個(gè)位置的元素
            # 說明可以保留當(dāng)前元素
            if nums[fast] != nums[slow - 2]:
                nums[slow] = nums[fast]
                slow += 1

        return slow

    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        beginIndex = 0
        endIndex = 0
        value = nums[beginIndex]
        while endIndex < len(nums):
            if nums[endIndex] == value:
                endIndex += 1
            else:
                if endIndex - beginIndex > 2:
                    for i in range(endIndex-1, beginIndex+1, -1):
                        nums.pop(i)
                    beginIndex = beginIndex + 2
                    endIndex = beginIndex
                    value = nums[beginIndex]
                else:
                    beginIndex = endIndex
                    value = nums[beginIndex]

        if endIndex - beginIndex > 2:
            for i in range(endIndex-1, beginIndex+1, -1):
                nums.pop(i)
        return len(nums)

if __name__ == '__main__':
    #print(Solution().removeDuplicates([1,1,1]))
    #print(Solution().removeDuplicates([1,1,1,2,2,3]))
    print(Solution().removeDuplicates([0,0,1,1,1,1,2,3,3]))

這個(gè)算法的代碼思路直觀,容易理解,使用滑動(dòng)窗口的概念,但是時(shí)間復(fù)雜度高,pop(i)操作是O(n),最壞情況時(shí)間復(fù)雜度是O(n^2),并且需要處理多個(gè)邊界情況,頻繁刪除操作導(dǎo)致數(shù)組元素頻繁移動(dòng)??梢試L試使用雙指針法,時(shí)間復(fù)雜度降為O(n).

總結(jié)

到此這篇關(guān)于Python每日一練之刪除有序數(shù)組中的重復(fù)項(xiàng)的文章就介紹到這了,更多相關(guān)Python刪除有序數(shù)組中的重復(fù)項(xiàng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytorch實(shí)現(xiàn)多項(xiàng)式回歸

    pytorch實(shí)現(xiàn)多項(xiàng)式回歸

    這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)多項(xiàng)式回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python實(shí)現(xiàn)圖片添加文字

    Python實(shí)現(xiàn)圖片添加文字

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)圖片添加文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 詳解Pytorch如何利用yaml定義卷積網(wǎng)絡(luò)

    詳解Pytorch如何利用yaml定義卷積網(wǎng)絡(luò)

    大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)都是直接通過寫一個(gè)Model類來定義的,這樣寫的代碼其實(shí)是比較好懂,也很方便。但是本文將介紹另一個(gè)方法:利用yaml定義卷積網(wǎng)絡(luò),感興趣的可以了解一下
    2022-10-10
  • 終端能到import模塊 解決jupyter notebook無法導(dǎo)入的問題

    終端能到import模塊 解決jupyter notebook無法導(dǎo)入的問題

    這篇文章主要介紹了在終端能到import模塊 而在jupyter notebook無法導(dǎo)入的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦

    15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦

    這篇文章主要介紹了15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Python requests 超時(shí)和重試的方法

    詳解Python requests 超時(shí)和重試的方法

    這篇文章主要介紹了詳解Python requests 超時(shí)和重試的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • python畫圖--輸出指定像素點(diǎn)的顏色值方法

    python畫圖--輸出指定像素點(diǎn)的顏色值方法

    今天小編就為大家分享一篇python畫圖--輸出指定像素點(diǎn)的顏色值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python SQL查詢并生成json文件操作示例

    Python SQL查詢并生成json文件操作示例

    這篇文章主要介紹了Python SQL查詢并生成json文件操作,涉及Python基于mssqlhelper模塊進(jìn)行mysql數(shù)據(jù)庫查詢與json格式文件生成相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • 關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問題

    關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問題

    這篇文章主要介紹了關(guān)于Python 解決Python3.9 pandas.read_excel(‘xxx.xlsx‘)報(bào)錯(cuò)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • win10從零安裝配置pytorch全過程圖文詳解

    win10從零安裝配置pytorch全過程圖文詳解

    這篇文章主要介紹了win10從零安裝配置pytorch全過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論