LeetCode刷题笔记
本文最后更新于5 天前,其中的信息可能已经过时,如有错误请发送邮件到likethedramaallthetime@gmail.com

题单来自灵神(灵茶山艾府)

分享|如何科学刷题?

完整题单

滑动窗口(双指针)

定长滑动窗口

核心思想:去除左元素,添加右元素

while r < len:
    delete left_element
    add right_element
    l++, r++

不定长滑动窗口

核心思想:与定长滑动窗口一样,不过指针的移动是有条件的

for r in range(len)
    while condition is true:
        do something
        update l

相向双指针

窗口内跳过重复元素

15. 三数之和

while l < r:
    if nums[l] + nums[r] > target:
        r -= 1
    elif nums[l] + nums[r] < target:
        l += 1
    else:
        # 这样判断会超时
        # if [x, nums[l], nums[r]] not in arr:
        #     arr.append([x, nums[l], nums[r]])
        arr.append([x, nums[l], nums[r]])
        l += 1
        while l < r and nums[l] == nums[l - 1]: l += 1
        r -= 1
        while l < r and nums[r] == nums[r + 1]: r -= 1

窗口内重复元素的计数

923. 三数之和的多种可能1577. 数的平方等于两数乘积的方法数计数一样

while l < r:
    if arr[l] + arr[r] > tg:
        r -= 1
    elif arr[l] + arr[r] < tg:
        l += 1
    else:
        index1 = bisect_right(arr, arr[l]) - 1
        index2 = bisect_left(arr, arr[r])
        if arr[l] == arr[r]:
            diff = r - l
            cnt += diff * (diff + 1) // 2
        else:
            cnt += (index1 - l + 1) * (r - index2 + 1)
        l = index1 + 1
        r = index2 - 1

切片后的两种组合

1616. 分割两个字符串得到回文串

def check(a: str, b: str) -> bool:
    l, r = 0, len(a) - 1

    while l < r and a[l] == b[r]:
        l += 1
        r -= 1
        # 为什么这里需要判断a和b中间的片段而不是只判断b的呢?
        # "aejbaal  flrmkswrydwdkdwdyrwskmrlf  qizjezd"
        # "uvebspq  ckawkhbrtlqwblfwzfptanhig  laabjea"
        # 因为a_pre 可以是aejbaal 也可以是aejbaal + flrmkswrydwdkdwdyrwskmrlf
    return isPalind(a[l: r + 1]) or isPalind(b[l: r + 1])

原地修改

核心思想:使用cur存储实际的索引,遍历过程仅需判定不满足condition的情况

for i in range(len):
    if not satisfy condition:
        do something
        cur++
标题:LeetCode刷题笔记
作者:LovelyYy
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇