国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

江陰規(guī)劃建設(shè)局網(wǎng)站關(guān)鍵詞排名方案

江陰規(guī)劃建設(shè)局網(wǎng)站,關(guān)鍵詞排名方案,wordpress 外部鏈接跳轉(zhuǎn),鄭州做網(wǎng)站zzmshl滑動(dòng)窗口 最小覆蓋子串滑動(dòng)窗口代碼 上期經(jīng)典 最小覆蓋子串 難度 - 困難 原題鏈接 - 最小覆蓋字串 給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。 注意: 對(duì)于 t…

滑動(dòng)窗口

  • 最小覆蓋子串
    • 滑動(dòng)窗口
    • 代碼
  • 上期經(jīng)典

最小覆蓋子串

難度 - 困難
原題鏈接 - 最小覆蓋字串

給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。
注意:
對(duì)于 t 中重復(fù)字符,我們尋找的子字符串中該字符數(shù)量必須不少于 t 中該字符數(shù)量。
如果 s 中存在這樣的子串,我們保證它是唯一的答案。

示例 1:
輸入:s = “ADOBECODEBANC”, t = “ABC”
輸出:“BANC”
解釋:最小覆蓋子串 “BANC” 包含來(lái)自字符串 t 的 ‘A’、‘B’ 和 ‘C’。

示例 2:
輸入:s = “a”, t = “a”
輸出:“a”
解釋:整個(gè)字符串 s 是最小覆蓋子串。

示例 3:
輸入: s = “a”, t = “aa”
輸出: “”
解釋: t 中兩個(gè)字符 ‘a(chǎn)’ 均應(yīng)包含在 s 的子串中,
因此沒(méi)有符合條件的子字符串,返回空字符串。

提示:
m == s.length
n == t.length
1 <= m, n <= 1e5
s 和 t 由英文字母組成
在這里插入圖片描述

滑動(dòng)窗口

這個(gè)算法技巧的思路非常簡(jiǎn)單,就是維護(hù)一個(gè)窗口,不斷滑動(dòng),然后更新答案么.
該算法的大致邏輯如下:

int left = 0, right = 0;while (left < right && right < s.size()) {// 增大窗口window.add(s[right]);right++;while (window needs shrink) {// 縮小窗口window.remove(s[left]);left++;}
}

這個(gè)算法技巧的時(shí)間復(fù)雜度是 O(N),比字符串暴力算法要高效得多。

本題的解題思路:
1、我們?cè)谧址?S 中使用雙指針中的左右指針技巧,初始化 left = right = 0,把索引左閉右開(kāi)區(qū)間 [left, right) 稱為一個(gè)「窗口」。
理論上你可以設(shè)計(jì)兩端都開(kāi)或者兩端都閉的區(qū)間,但設(shè)計(jì)為左閉右開(kāi)區(qū)間是最方便處理的。因?yàn)檫@樣初始化 left = right = 0 時(shí)區(qū)間 [0, 0) 中沒(méi)有元素,但只要讓 right 向右移動(dòng)(擴(kuò)大)一位,區(qū)間 [0, 1) 就包含一個(gè)元素 0 了。如果你設(shè)置為兩端都開(kāi)的區(qū)間,那么讓 right 向右移動(dòng)一位后開(kāi)區(qū)間 (0, 1) 仍然沒(méi)有元素;如果你設(shè)置為兩端都閉的區(qū)間,那么初始區(qū)間 [0, 0] 就包含了一個(gè)元素。這兩種情況都會(huì)給邊界處理帶來(lái)不必要的麻煩。

2、我們先不斷地增加 right 指針擴(kuò)大窗口 [left, right),直到窗口中的字符串符合要求(包含了 T 中的所有字符)。

3、此時(shí),我們停止增加 right,轉(zhuǎn)而不斷增加 left 指針縮小窗口 [left, right),直到窗口中的字符串不再符合要求(不包含 T 中的所有字符了)。同時(shí),每次增加 left,我們都要更新一輪結(jié)果。

4、重復(fù)第 2 和第 3 步,直到 right 到達(dá)字符串 S 的盡頭。

這個(gè)思路其實(shí)也不難,第 2 步相當(dāng)于在尋找一個(gè)「可行解」,然后第 3 步在優(yōu)化這個(gè)「可行解」,最終找到最優(yōu)解,也就是最短的覆蓋子串。左右指針輪流前進(jìn),窗口大小增增減減,窗口不斷向右滑動(dòng),這就是「滑動(dòng)窗口」這個(gè)名字的來(lái)歷。

下面畫(huà)圖理解一下,needs 和 window 相當(dāng)于計(jì)數(shù)器,分別記錄 T 中字符出現(xiàn)次數(shù)和「窗口」中的相應(yīng)字符的出現(xiàn)次數(shù)。

在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

代碼

public String minWindow1(String s, String t) {// 用于記錄需要的字符和窗口中的字符及其出現(xiàn)的次數(shù)Map<Character, Integer> need = new HashMap<>();Map<Character, Integer> window = new HashMap<>();// 統(tǒng)計(jì) t 中各字符出現(xiàn)次數(shù)for (char c : t.toCharArray())need.put(c, need.getOrDefault(c, 0) + 1);int left = 0, right = 0;int valid = 0; // 窗口中滿足需要的字符個(gè)數(shù)// 記錄最小覆蓋子串的起始索引及長(zhǎng)度int start = 0, len = Integer.MAX_VALUE;while (right < s.length()) {// c 是將移入窗口的字符char c = s.charAt(right);// 擴(kuò)大窗口right++;// 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新if (need.containsKey(c)) {window.put(c, window.getOrDefault(c, 0) + 1);if (window.get(c).equals(need.get(c)))valid++; // 只有當(dāng) window[c] 和 need[c] 對(duì)應(yīng)的出現(xiàn)次數(shù)一致時(shí),才能滿足條件,valid 才能 +1}// 判斷左側(cè)窗口是否要收縮while (valid == need.size()) {// 更新最小覆蓋子串if (right - left < len) {start = left;len = right - left;}// d 是將移出窗口的字符char d = s.charAt(left);// 縮小窗口left++;// 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新if (need.containsKey(d)) {if (window.get(d).equals(need.get(d)))valid--; // 只有當(dāng) window[d] 內(nèi)的出現(xiàn)次數(shù)和 need[d] 相等時(shí),才能 -1window.put(d, window.get(d) - 1);}}}// 返回最小覆蓋子串return len == Integer.MAX_VALUE ?"" : s.substring(start, start + len);}

上期經(jīng)典

leetcode59. 螺旋矩陣 II

http://m.aloenet.com.cn/news/35884.html

相關(guān)文章:

  • 歐美網(wǎng)站欣賞網(wǎng)站關(guān)鍵詞優(yōu)化培訓(xùn)
  • 寶雞品牌網(wǎng)站建設(shè)百度關(guān)鍵字搜索排名
  • 舉報(bào)網(wǎng)站賺錢(qián)安徽建站
  • 個(gè)人網(wǎng)站備案名稱舉例西安百度推廣優(yōu)化托管
  • 無(wú)錫seo網(wǎng)站管理seo是啥軟件
  • 河南網(wǎng)站制作東莞哪種網(wǎng)站推廣好
  • 國(guó)內(nèi)網(wǎng)站建設(shè)的趨勢(shì)是怎樣的品牌的宣傳及推廣
  • 廣州站長(zhǎng)北京seo優(yōu)化服務(wù)
  • 荔灣網(wǎng)站建設(shè)哪家好百度競(jìng)價(jià)開(kāi)戶公司
  • 找公司做網(wǎng)站要注意什么2022知名品牌營(yíng)銷(xiāo)案例100例
  • 車(chē)公廟網(wǎng)站建設(shè)2345網(wǎng)址導(dǎo)航主頁(yè)
  • js制作網(wǎng)頁(yè)游戲免費(fèi)優(yōu)化網(wǎng)站排名
  • 濕地公園網(wǎng)站建設(shè)國(guó)外網(wǎng)站搭建
  • 免費(fèi)空間備案seo關(guān)鍵詞排名優(yōu)化案例
  • 工裝公司名字怎么起seo專員是做什么的
  • o2o網(wǎng)站建設(shè)最好公司seo研究中心qq群
  • 紹興網(wǎng)站建設(shè)淘寶指數(shù)查詢官網(wǎng)
  • 云南熱搜科技做網(wǎng)站不給源碼衡陽(yáng)百度推廣
  • 做測(cè)試題的網(wǎng)站關(guān)鍵詞優(yōu)化的最佳方法
  • 冬創(chuàng)網(wǎng)站建設(shè)培訓(xùn)中心網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃內(nèi)容
  • 網(wǎng)站改版 更換服務(wù)器 排名丟失網(wǎng)站推廣建站
  • 品牌網(wǎng)站建設(shè)搭建優(yōu)化排名推廣關(guān)鍵詞
  • app軟件開(kāi)發(fā)平臺(tái)游戲seo快速排名軟件方案
  • 想招聘員工去哪個(gè)網(wǎng)站手機(jī)網(wǎng)站建設(shè)案例
  • 下載學(xué)校網(wǎng)站模板下載51網(wǎng)站統(tǒng)計(jì)
  • 簡(jiǎn)單的網(wǎng)站設(shè)計(jì)圖aso關(guān)鍵詞優(yōu)化工具
  • 東莞長(zhǎng)安網(wǎng)站建設(shè)鄭州網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 榆林做網(wǎng)站多少錢(qián)seo顧問(wèn)服
  • 注冊(cè)網(wǎng)站做推廣大澤山seo快速排名
  • 怎么看網(wǎng)站有沒(méi)有做301跳轉(zhuǎn)網(wǎng)上銷(xiāo)售渠道