最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

187 重復(fù)的DNA序列

2023-05-31 08:24 作者:目標(biāo)力扣Knight  | 我要投稿

方法一:暴力 + 切片

枚舉滑動窗口的做端點(diǎn),采用基地址 + 偏移量【滑動數(shù)組長度】的方式,對原字符串切片,利用哈希表計數(shù),只要出現(xiàn)次數(shù)等于2則將其加入返回值中。

Python版本




C++版本


復(fù)雜度分析

  • 時間復(fù)雜度:O(N)。此處 n 指的是字符串 s 的最大長度,加之每次取得長度為 10 的子字符串,實際復(fù)雜度應(yīng)為 10N。

  • 空間復(fù)雜度:O(N)?;瑒哟翱跒?0,每一個位序可能有四種填充字符,可能的組合共有 4 ^ 10,1048576,約等于10N.

方法二:哈希映射 + 位運(yùn)算 + 滑動窗口

四種字符,若使用二進(jìn)制表達(dá),需要 \log_{2}{x}位,即四位。分別將其映射為二進(jìn)制數(shù)0, 1, 10, 11, 顯然需要 k * 2 = 20二進(jìn)制位表達(dá)一個滑動窗口;

設(shè)若存在十進(jìn)制表達(dá)的二進(jìn)制數(shù):x。首先計算前 9 個字符的二進(jìn)制值,每一次先將 x 的二進(jìn)制數(shù)向左移動兩位,將從字符串 s 中取得的字符,經(jīng)過哈希映射后,使用按位或運(yùn)算改寫到 x 的二進(jìn)制數(shù)的最低兩位中,循環(huán)往復(fù),直到 9 個字符全部加入到 x 的二進(jìn)制表達(dá)中。

在使用滑動窗口時,總的原則是套用隊列入隊的概念,入隊,出隊方向分別對應(yīng)二進(jìn)制的最低兩位和最高兩位,以下操作將以隊列術(shù)語代替。當(dāng)滑動窗口向右滑動時,將當(dāng)前遍歷到的字符,經(jīng)過哈希映射后轉(zhuǎn)義,將其通過按位或運(yùn)算入隊,同時制造一個容器 Y:二進(jìn)制位等于20,全為1的二進(jìn)制數(shù)。

出隊將用位運(yùn)算中的按位與運(yùn)算實現(xiàn)。

我們知道,在與運(yùn)算中,若二進(jìn)制位長度不一,存在著高位補(bǔ)零和高位截斷的兩種操作,前者適用于滑動礦口長度小于等于9的情況,后者適用于滑動窗口長度大于等于10的情況。

構(gòu)造容器Y時,首先將 1 向左位移 k * 2 的位,即20位。此時二進(jìn)制位長度為21位,將其減一,得到20位,每一個位均為1的容器。

Python版本




C++版本


復(fù)雜度分析

  • 時間復(fù)雜度:O(N)。此處 n 指的是字符串 s 的最大長度,加之每次取得長度為 10 的子字符串,實際復(fù)雜度應(yīng)為 10N。

  • 空間復(fù)雜度:O(N)?;瑒哟翱跒?0,每一個位序可能有四種填充字符,可能的組合共有 4 ^ 10,1048576,約等于10N.

圖示

圖示


187 重復(fù)的DNA序列的評論 (共 條)

分享到微博請遵守國家法律
湘乡市| 淮北市| 永登县| 石泉县| 双牌县| 陆丰市| 大渡口区| 台江县| 砚山县| 理塘县| 昌吉市| 正安县| 东乡族自治县| 夏津县| 平原县| 杭州市| 左云县| 前郭尔| 安宁市| 本溪| 柏乡县| 和政县| 皮山县| 涡阳县| 枞阳县| 金秀| 调兵山市| 临颍县| 浦东新区| 兴义市| 新兴县| 五指山市| 历史| 色达县| 桃源县| 麻江县| 凤阳县| 灵石县| 泾川县| 屏东市| 宁南县|