LeetCode Biweekly Contest 119 解題紀錄
這次前三題沒怎麼動腦,11分鐘就寫完了,第四題寫完Floyd-Warshall想了很久怎麼選點,沒注意到n = 10,把所有狀態跑一遍就可以了 …
All problems solved by python
Q1: 🟢 2956. Find Common Elements Between Two Arrays 1215
tags: 陣列(Array)
雜湊表(Hash Table)
題意
給定 和 兩個陣列,分別有 和 個元素。
- 統計 且 在 中至少出現一次的元素個數。
- 統計 且 在 中至少出現一次的元素個數。
思路:計數 + 雜湊表
先列出 和 的元素出現次數,再分別計算 和 中的每個元素在另一個 Array 中有無出現即可。可以用Hash Table或Hash Set加速,若遍歷整個Array的話,時間複雜度會變成 。
複雜度分析
- 時間複雜度:
- 空間複雜度:
1 | class Solution: |
Q2: 🟡 2957. Remove Adjacent Almost-Equal Characters 1430
tags: 分組循環
字串(String)
貪心(Greedy)
題意
給定一個字串 ,每次可以選擇一個下標 ,將 修改成任一個小寫英文字母。求使得 中沒有 almost-equal characters 的最少操作次數。
- 若 則 a 和 b 是 almost-equal characters (近似相等字元)
思路:貪心 + 分組循環
若連續出現 個 近似相等字元,則最少需要 次操作將其修改成不同的字母,用分組循環的方式計算連續出現的 近似相等字元 的個數即可。
1 | class Solution: |
Q3: 🟡 2958. Length of Longest Subarray With at Most K Frequency 1535
tags: 滑動窗口(Sliding Window)
陣列(Array)
雜湊表(Hash Table)
題意
給定一個整數 Array 和一個整數 ,如果一個陣列中所有元素的出現次數都 ,那麼我們稱這個陣列為 good array ,返回請你回傳 nums 中 longest good subarray 的長度。
思路:滑動窗口(Sliding Window)
入窗口時,檢查新入元素的出現次是否超過 ,若超過則持續移動左指標,否則更新答案。
1 | class Solution: |
類題
不定長度的滑動窗口 (求最長或最大)
- 🟡 3. Longest Substring Without Repeating Characters
的情況 - 🟡 1493. Longest Subarray of 1’s After Deleting One Element 1423
- 🟡 904. Fruit Into Baskets 1516
- 🟡 1695. Maximum Erasure Value 1529
- 🟡 2841. Maximum Sum of Almost Unique Subarray 1546
- 🟡 2024. Maximize the Confusion of an Exam 1643
- 🟡 1004. Max Consecutive Ones III 1656
- 🟡 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit 1672
- 🟡 2401. Longest Nice Subarray 1750
- 🟡 1658. Minimum Operations to Reduce X to Zero 1817
- 🟡 1838. Frequency of the Most Frequent Element 1876
- 🟡 2831. Find the Longest Equal Subarray 1976
- 🔴 2106. Maximum Fruits Harvested After at Most K Steps 2062
- 🔴 1610. Maximum Number of Visible Points 2147
- 🟡 395. Longest Substring with At Least K Repeating Characters
- 🟢 1763. Longest Nice Substring 1522
- 🔴 2953. Count Complete Substrings
- 159. Longest Substring with At Most Two Distinct Characters (Premium)
- 340. Longest Substring with At Most K Distinct Characters (Premium)
不定長度的滑動窗口 (求最短或最小)
- 🟡 209. Minimum Size Subarray Sum
- 🟡 1234. Replace the Substring for Balanced String 1878
- 🟡 1574. Shortest Subarray to be Removed to Make Array Sorted 1932
- 🔴 76. Minimum Window Substring
不定長度的滑動窗口 (求subarray個數)
- 🟡 2799. Count Complete Subarrays in an Array 1398
- 🟡 713. Subarray Product Less Than K
- 🟡 1358. Number of Substrings Containing All Three Characters 1646
- 🔴 2302. Count Subarrays With Score Less Than K 1808
- 🟡 2537. Count the Number of Good Subarrays 1892
- 🟡 2762. Continuous Subarrays 1940
- 2743. Count Substrings Without Repeating Character (Premium)
多指針滑動窗口
- 🟡 930. Binary Subarrays With Sum 1592
- 🟡 1248. Count Number of Nice Subarrays 1624
- 🟡 2563. Count the Number of Fair Pairs 1721
- 🟡 1712. Ways to Split Array Into Three Subarrays 2079
- 🔴 2444. Count Subarrays With Fixed Bounds 2093
- 🔴 992. Subarrays with K Different Integers 2210
題單來自:@灵茶山艾府
Q4: 🔴 2959. Number of Possible Sets of Closing Branches 2077
tags: 狀態壓縮
二進位枚舉
圖(Graph)
最短路徑(Shortest Path)
Floyd-Warshall
枚舉(Enumeration)
位運算(Bit Manipulation)
題意
- 給定一張 Undirected Multigraph ,其中有 個點,給定Array ,其中 表示一條從 到 長度為 的無向邊。
- 刪除一些節點和與其相鄰的邊,使得剩下的節點之間任意點的最長距離不超過 ,求有多少種刪除節點的方案。
- 注意,兩個分部之間可能會有多條道路。
限制:
思路:暴力枚舉 + 狀態壓縮 + Floyd-Warshall
- ,所以可以暴力枚舉所有的狀態,然後用
Floyd-Warshall
計算所有點對之間的最短路徑,再檢查是否有點對的距離超過 。 - 狀態可以用一個整數表示,第 個 bit 為 表示第 個點被選擇,否則表示沒有被選擇。
- Time Complexity: ,
1 | class Solution: |
類題
Floyd-Warshall
- 🔴 2642. Design Graph With Shortest Path Calculator 1811
- 🟡 1334. Find the City With the Smallest Number of Neighbors at a Threshold Distance 1811
- 🟡 2101. Detonate the Maximum Bombs 1880
二進位枚舉
- 🟡 78. Subsets
- 🟡 77. Combinations
- 🟡 1286. Iterator for Combination 1591
- 🟡 2397. Maximum Rows Covered by Columns 1719
- 🟡 2212. Maximum Points in an Archery Competition 1869
- 🔴 1601. Maximum Number of Achievable Transfer Requests 2119
- 320. Generalized Abbreviation (Premium)
題單來自:@灵茶山艾府
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus