国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode with Golang 滑動(dòng)窗口 Part1

這篇具有很好參考價(jià)值的文章主要介紹了Leetcode with Golang 滑動(dòng)窗口 Part1。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

滑動(dòng)窗口的定義:

滑動(dòng)窗口這一個(gè)技巧主要運(yùn)用于處理數(shù)組問題上,一般用于“子串”問題。精髓是,維護(hù)一個(gè)里面裝著元素的“窗口”,在將新元素裝進(jìn)“窗口”的同時(shí),根據(jù)題意,把不符合題意的元素踢出“窗口”。

滑動(dòng)窗口的模板:

right:=0
left:=0
for right<len(數(shù)組或字符串){
  n = 數(shù)組[right]
  right+=1
  for (窗口需要收縮的時(shí)候,判斷){
    l = 數(shù)組[left]
    ...
    left+=1
  }
}

接下來看幾道題目:

Leetcode 209.長度最小的子數(shù)組

https://leetcode.cn/problems/minimum-size-subarray-sum/

題目簡介:找到長度最短的一個(gè)子數(shù)組。并且數(shù)組內(nèi)數(shù)字的和>=target

Leetcode with Golang 滑動(dòng)窗口 Part1,Golang,leetcode,算法

題目分析:窗口不斷擴(kuò)大,當(dāng)窗口里的元素的總和滿足條件后(>=target),窗口縮小,即target減去窗口左端的數(shù)。然后再用一個(gè)變量記錄窗口的大小,最小值隨時(shí)更新。直接用模板就好了:

func min(i, j int) int {
    if i >= j {
        return j
    } else {
        return i
    }
}
func minSubArrayLen(target int, nums []int) int {
    sum := 0
    right := 0
    left := 0
    res := 10000000
    for right < len(nums) {
        n := nums[right]
        right += 1
        sum += n
        for sum >= target {
            sum -= nums[left]
            res = min(res, right-left)
            left += 1
        }
    }
    if res == 10000000 {
        return 0
    }
    return res
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-805930.html

Leetcode 3.無重復(fù)的最長字串

給定一個(gè)字符串 s ,請你找出其中不含有重復(fù)字符的 最長子串 的長度。

?

https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/

Leetcode with Golang 滑動(dòng)窗口 Part1,Golang,leetcode,算法

func lengthOfLongestSubstring(s string) int {
    right := 0
    left := 0
    res := 0
    check_dict := make(map[string]int)
    for right < len(s) {
        word := string(s[right])
        if _, exist := check_dict[word]; !exist {
            check_dict[word] = 1
        } else {
            check_dict[word] += 1
        }
        right += 1
        for check_dict[word] > 1 {
            l := string(s[left])
            left += 1
            check_dict[l] -= 1
        }
        if right-left > res {
            res = right - left
        }

    }
    return res

}

LEETCODE 904.水果成籃

https://leetcode.cn/problems/fruit-into-baskets/description/

題目有點(diǎn)拗口,簡單解釋:“窗口內(nèi)”只能含有兩種數(shù)字。問窗口最長能有多長?

可以用一個(gè)字典來裝元素。當(dāng)字典中出現(xiàn)3種及以上數(shù)字時(shí),開始收縮窗口。有一個(gè)要點(diǎn),當(dāng)元素的個(gè)數(shù)為“0”時(shí),記得把鍵值對刪除。

Leetcode with Golang 滑動(dòng)窗口 Part1,Golang,leetcode,算法

func totalFruit(fruits []int) int {
    right := 0
    left := 0
    res := 0
    dict := make(map[int]int)
    for right < len(fruits) {
       n := fruits[right]
        right+=1
       if _, exist := dict[n]; !exist {
          dict[n] = 1
       } else {
          dict[n] += 1
       }
       for len(dict) > 2 {
          l := fruits[left]
          left += 1
          dict[l] -= 1
          if dict[l] == 0 {
                delete(dict,l)
          }
       }
        if right-left >res{
            res = right-left
        }
    }
    return res
}

?

?

到了這里,關(guān)于Leetcode with Golang 滑動(dòng)窗口 Part1的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode 算法專題突破】滑動(dòng)窗口(?)

    【LeetCode 算法專題突破】滑動(dòng)窗口(?)

    學(xué)完了雙指針?biāo)惴ǎ瑒?dòng)窗口那肯定是逃不掉了,我個(gè)人感覺他倆就不分家,不把滑動(dòng)窗口的題目好好刷上一刷我都難受 先來一道經(jīng)典的滑動(dòng)窗口試試水 題目鏈接:209. 長度最小的子數(shù)組 其實(shí)滑動(dòng)窗口題目的解法都大同小異,我們基本上寫幾道題目,就能很好的掌握這個(gè)算

    2024年02月07日
    瀏覽(22)
  • LeetCode239.滑動(dòng)窗口最大值

    LeetCode239.滑動(dòng)窗口最大值

    看到這道題我就有印象, 我在劍指offer里面做過這道題,我記得當(dāng)時(shí)用的是優(yōu)先隊(duì)列,然后我腦子里一下子就有了想法,拿優(yōu)先隊(duì)列作為窗口,每往右移動(dòng)一步,把左邊的數(shù)remove掉,把右邊的數(shù)add進(jìn)來,然后把隊(duì)頭,也就是窗口中最大的元素放入答案數(shù)組,然后就寫出了如下

    2024年02月11日
    瀏覽(28)
  • leetcode-239-滑動(dòng)窗口最大值

    leetcode-239-滑動(dòng)窗口最大值

    題意描述: 給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k 個(gè)數(shù)字。滑動(dòng)窗口每次只向右移動(dòng)一位。 返回 滑動(dòng)窗口中的最大值 。 示例: 輸入:nums = [1,3,-1,-3,5,3,6,7], k = 3 輸出:[3,3,5,5,6,7] 解釋: 滑動(dòng)

    2024年02月07日
    瀏覽(25)
  • LeetCode算法小抄--滑動(dòng)窗口算法

    ?申明: 未經(jīng)許可,禁止以任何形式轉(zhuǎn)載,若要引用,請標(biāo)注鏈接地址。 全文共計(jì)6244字,閱讀大概需要3分鐘 ??更多學(xué)習(xí)內(nèi)容, 歡迎??關(guān)注??文末我的個(gè)人微信公眾號(hào):不懂開發(fā)的程序猿 個(gè)人網(wǎng)站:https://jerry-jy.co/ 滑動(dòng)窗口算法 思路 1、我們在字符串 S 中使用雙指針中的

    2023年04月09日
    瀏覽(25)
  • 【LeetCode熱題100】【子串】滑動(dòng)窗口最大值

    【LeetCode熱題100】【子串】滑動(dòng)窗口最大值

    題目 給你一個(gè)整數(shù)數(shù)組? nums ,有一個(gè)大小為? k ? 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的? k ?個(gè)數(shù)字。滑動(dòng)窗口每次只向右移動(dòng)一位。 返回? 滑動(dòng)窗口中的最大值? 。 示例 1: 示例 2: 提示: 1 = nums.length = 105 -104?= nums[i] = 104 1 =

    2024年01月19日
    瀏覽(25)
  • 【滑動(dòng)窗口】leetcode1004:最大連續(xù)1的個(gè)數(shù)

    【滑動(dòng)窗口】leetcode1004:最大連續(xù)1的個(gè)數(shù)

    最大連續(xù)1的個(gè)數(shù) ?這道題要我們找最大連續(xù)1的個(gè)數(shù),看到“連續(xù)”二字,我們要想到滑動(dòng)窗口的方法?;瑒?dòng)窗口的研究對象是一個(gè)連續(xù)的區(qū)間,這個(gè)區(qū)間需要滿足某個(gè)條件。那么本題要找的是怎樣的區(qū)間呢?是一個(gè)通過翻轉(zhuǎn)0后得到連續(xù)1的區(qū)間,而最多可以翻轉(zhuǎn)k個(gè)字符。 故

    2024年02月11日
    瀏覽(18)
  • 劍指 Offer 59 - I. 滑動(dòng)窗口的最大值 / LeetCode 239. 滑動(dòng)窗口最大值(優(yōu)先隊(duì)列 / 單調(diào)隊(duì)列)

    鏈接:劍指 Offer 59 - I. 滑動(dòng)窗口的最大值;LeetCode 239. 滑動(dòng)窗口最大值 難度:困難 下一篇:劍指 Offer 59 - II. 隊(duì)列的最大值(單調(diào)隊(duì)列) 給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k 個(gè)數(shù)字?;瑒?dòng)窗

    2024年02月15日
    瀏覽(21)
  • 算法刷題記錄-雙指針/滑動(dòng)窗口(LeetCode)

    算法刷題記錄-雙指針/滑動(dòng)窗口(LeetCode)

    思路 根據(jù)題目描述,我們可以知道,如果要將某個(gè)單詞定義為可擴(kuò)張(stretchy),需要滿足如下兩個(gè)條件: 所以,我們在實(shí)現(xiàn)的時(shí)候,可以通過兩個(gè)指針p1和p2,分別指向s和word,分別統(tǒng)計(jì)連續(xù)的相同字符數(shù)量c1和c2,然后再通過上述的兩個(gè)條件進(jìn)行判斷,即:如果 則表示該單

    2024年02月09日
    瀏覽(26)
  • leetcode76. 最小覆蓋子串(滑動(dòng)窗口-java)

    leetcode76. 最小覆蓋子串(滑動(dòng)窗口-java)

    難度 - 困難 原題鏈接 - 最小覆蓋字串 給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。 注意: 對于 t 中重復(fù)字符,我們尋找的子字符串中該字符數(shù)量必須不少于 t 中該字符數(shù)量。 如果

    2024年02月11日
    瀏覽(27)
  • 【滑動(dòng)窗口】【map】LeetCode:76最小覆蓋子串

    【滑動(dòng)窗口】【map】LeetCode:76最小覆蓋子串

    【二叉樹】【單調(diào)雙向隊(duì)列】LeetCode239:滑動(dòng)窗口最大值 C++算法:滑動(dòng)窗口總結(jié) 給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。 注意: 對于 t 中重復(fù)字符,我們尋找的子字符串中該字

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包