LeetCode Hot100 刷題筆記(2)—— 子串、普通數組、矩陣

目錄

前言

一、子串

1. 和為 K 的子數組

2. 滑動窗口最大值

3. 最小覆蓋子串

二、普通數組

4. 最大子數組和

5. 合并區間

6. 輪轉數組

7. 除自身以外數組的乘積

8. 缺失的第一個正數

三、矩陣

9. 矩陣置零

10. 螺旋矩陣

11. 旋轉圖像

12. 搜索二維矩陣 II


前言

一、子串:和為 K 的子數組,滑動窗口最大值,最小覆蓋子串;(日更中.....)

二、普通數組:最大子數組和,合并區間,輪轉數組,除自身以外數組的乘積,缺失的第一個正數;

三、矩陣:矩陣置零;螺旋矩陣;旋轉圖像;搜索二維矩陣 II。


一、子串

1. 和為 K 的子數組

原題鏈接:560. 和為 K 的子數組 - 力扣(LeetCode)

class Solution(object):def subarraySum(self, nums, k):dicts = {0: 1}n = len(nums)sums = 0res = 0for i in range(n):sums +=nums[i]res += dicts.get(sums-k, 0)dicts[sums] = dicts.get(sums, 0) + 1return res

2. 滑動窗口最大值

原題鏈接:239. 滑動窗口最大值 - 力扣(LeetCode)

class Solution(object):def maxSlidingWindow(self, nums, k):q = []res = []for i in range(len(nums)):# 1. 入棧while q and nums[q[-1]] <= nums[i]:q.pop()q.append(i)# 2.出棧while i - q[0] >= k:q.pop(0)# 3.記錄結果if i + 1 >= k:res.append(nums[q[0]])return res

3. 最小覆蓋子串

原題鏈接:76. 最小覆蓋子串 - 力扣(LeetCode)

# 考點:滑窗(不定窗口),快慢指針 --> 對比滑動窗口題型第2題
class Solution(object):def minWindow(self, s, t):from collections import Countercnt_t = Counter(t)cnt_s = Counter()for key in cnt_t:if key not in cnt_s:cnt_s[key] = 0def is_exist(cnt_s, cnt_t):for key in cnt_t:if cnt_s[key] < cnt_t[key]:return Falsereturn Trueres = ""left = 0min_len = float("inf")for right in range(len(s)):if s[right] in cnt_s:cnt_s[s[right]] += 1while is_exist(cnt_s, cnt_t):if right - left + 1 < min_len:min_len =  right - left + 1res = s[left: right+1]if s[left] in cnt_s:cnt_s[s[left]] -= 1left += 1return res

二、普通數組

4. 最大子數組和

原題鏈接:53. 最大子數組和 - 力扣(LeetCode)

class Solution(object):def maxSubArray(self, nums):for i in range(1, len(nums)):nums[i] = max(nums[i-1]+nums[i], nums[i])  # 動態規劃return max(nums)

5. 合并區間

原題鏈接:56. 合并區間 - 力扣(LeetCode)

class Solution(object):def merge(self, intervals):intervals = sorted(intervals, key = lambda x: x[0])merge = []for interval in intervals:if not merge or merge[-1][1] < interval[0]:merge.append(interval)else:merge[-1][1] = max(merge[-1][1], interval[1])return merge

6. 輪轉數組

原題鏈接:189. 輪轉數組 - 力扣(LeetCode)

class Solution(object):def rotate(self, nums, k):k = k % len(nums)nums[:] = nums[-k:] + nums[:-k]

7. 除自身以外數組的乘積

原題鏈接:238. 除自身以外數組的乘積 - 力扣(LeetCode)

class Solution(object):def productExceptSelf(self, nums):n = len(nums)answer = [1] * n# 前綴積prefix = 1for i in range(n):answer[i] *= prefixprefix *= nums[i]# 后綴積suffix = 1for i in range(n-1, -1, -1):answer[i] *= suffixsuffix *= nums[i]return answer

8. 缺失的第一個正數

原題鏈接:41. 缺失的第一個正數 - 力扣(LeetCode)

class Solution(object):def firstMissingPositive(self, nums):# dicts處改成list會內存溢出dicts = {i:0 for i in nums}for i in range(1, len(nums)+1):if i not in dicts:return ireturn len(nums)+1

三、矩陣

9. 矩陣置零

原題鏈接:73. 矩陣置零 - 力扣(LeetCode)

class Solution(object):def setZeroes(self, matrix):setx, sety = set(), set()m, n = len(matrix), len(matrix[0])for i in range(m):for j in range(n):if matrix[i][j] == 0:setx.add(i)sety.add(j)for i in range(m):for j in range(n):if i in setx or j in sety:matrix[i][j] = 0

10. 螺旋矩陣

原題鏈接:54. 螺旋矩陣 - 力扣(LeetCode)

class Solution(object):def spiralOrder(self, matrix):res = []while matrix:res += matrix.pop(0)matrix = list(zip(*matrix))[::-1]return res

11. 旋轉圖像

原題鏈接:48. 旋轉圖像 - 力扣(LeetCode)

class Solution(object):def rotate(self, matrix):matrix[:] = matrix[::-1]matrix[:] = list(zip(*matrix))

12. 搜索二維矩陣 II

原題鏈接:240. 搜索二維矩陣 II - 力扣(LeetCode)

class Solution(object):def searchMatrix(self, matrix, target):matrix = sum(matrix, [])for m in matrix:if m == target:return Truereturn False

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77352.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Git 常用操作指令指南】

一、初始化與配置 1. 設置全局賬戶信息 git config --global user.name "用戶名" # 設置全局用戶名 git config --global user.email "郵箱" # 設置全局郵箱 --global 表示全局生效&#xff0c;若需針對單個倉庫配置&#xff0c;可省略該參數 2.…

教培行業創建自己品牌的重要意義——教育培訓小程序

在競爭激烈的教培行業&#xff0c;創建自身品牌意義重大。 擁有獨特品牌能顯著提升機構競爭力與辨識度。如今教培市場同質化嚴重&#xff0c;一個亮眼的品牌小程序可使機構從眾多競爭者中脫穎而出&#xff0c;讓學員和家長快速識別并記住。 品牌小程序有助于增強信任度和口碑。…

Docker 介紹 · 安裝詳細教程

為什么選擇 Docker&#xff1f; ? 環境一致性 – 告別“在我機器上能跑”的問題&#xff0c;確保開發、測試、生產環境一致。 ? 高效輕量 – 秒級啟動&#xff0c;資源占用遠低于傳統虛擬機。 ? 跨平臺支持 – 可在任何支持 Docker 的環境中運行&#xff0c;包括云服務器、…

GitHub 上開源一個小項目的完整指南

GitHub 上開源一個小項目的完整指南 &#x1f680; 第一步&#xff1a;準備你的項目 在開源之前&#xff0c;確保項目是可用且有一定結構的&#xff1a; ? 最低要求 項目文件清晰、結構合理&#xff08;比如&#xff1a;src/、README.md、LICENSE&#xff09;項目能在本地正…

React 第三十節 使用 useState 和 useEffect Hook實現購物車

不使用 redux 實現 購物車案例 使用 React 自帶的 useState 和 useEffect Hook 即可實現購物車 export default function ShoppingCar() {// 要結算的商品 總數 以及總價const [totalNum, setTotalNum] useState(0)const [totalPerice, setTotalPerice] useState(0)// 商品…

藍橋杯第十一屆省賽C++B組真題解析

藍橋杯第十一屆省賽CB組真題解析 八、回文日期https://www.lanqiao.cn/problems/348/learning 方法一&#xff1a;暴力枚舉所有的日期&#xff0c;記錄有多少個回文日期。 #include <bits/stdc.h> using namespace std; int month[13]{0,31,28,31,30,31,30,31,31,30,31…

Python和MicroPython的解釋器區別

Python和MicroPython的解釋器不是同一個&#xff0c;它們在設計目標、實現方式和運行環境上都有顯著的區別。以下是它們的主要區別&#xff1a; 1. 底層實現 Python解釋器&#xff08;CPython&#xff09;&#xff1a; Python的標準解釋器是CPython&#xff08;C語言實現的Pyt…

Cython加密多層目錄中的Python腳本方案

近期有一個VueJavaDocker項目中需要加密Python腳本的需求&#xff0c;調研后決定采用Cython。 使用Cython編譯為二進制 步驟&#xff1a; 安裝Cython&#xff1a;pip install cython創建setup.py&#xff1a; from distutils.core import setup from Cython.Build import c…

力扣DAY40-45 | 熱100 | 二叉樹:直徑、層次遍歷、有序數組->二叉搜索樹、驗證二叉搜索樹、二叉搜索樹中第K小的元素、右視圖

前言 簡單、中等 √ 好久沒更了&#xff0c;感覺二叉樹來回就那些。有點變懶要警醒&#xff0c;不能止步于笨方法&#xff01;&#xff01; 二叉樹的直徑 我的題解 遍歷每個節點&#xff0c;左節點最大深度右節點最大深度當前節點當前節點為中心的直徑。如果左節點深度更大…

頭歌數據庫【數據庫概論】第10-11章 故障恢復與并發控制

第1關&#xff1a;數據庫恢復技術 1、事務的&#xff08; A&#xff09;特性要求事務必須被視為一個不可分割的最小工作單元 A、原子性 B、一致性 C、隔離性 D、持久性 2、事務的&#xff08;C &#xff09;特性要求一個事務在執行時&#xff0c;不會受到其他事務的影響。 A、原…

windows下,cursor連接MCP服務器

1.下載并安裝node 安裝后&#xff0c;在cmd命令框中&#xff0c;輸入命令node -v可以打印版本號&#xff0c;證明安裝完成 2.下載MCP服務器項目 在MCP服務器找到對應項目&#xff0c;這里以server-sequential-thinking為例子 在本地cmd命令窗口&#xff0c;使用下面命令下載…

前端配置husky,commit-lint導致的git提交錯誤:git xx@0.0.0 lint:lint-staged

前端配置husky&#xff0c;commit-lint導致的git提交錯誤&#xff1a;git xx0.0.0 lint:lint-staged git commit -m "xxx"時出現以下報錯&#xff0c;可能是前端配置husky&#xff0c;commit-lint的原因 //報錯信息 git xx0.0.0 lint:lint-staged首先要知道出現這個錯…

各種場景的ARP攻擊描述筆記(超詳細)

1、ARP報文限速 上一章我們說過ARP報文也是需要上送CPU進行處理的協議報文,如果設備對收到的大量ARP報文全部進行處理,可能導致CPU負荷過重而無法處理其他業務。因此,在處理之前需要對ARP報文進行限速,以保護CPU資源。 1.根據源MAC地址或源IP地址進行ARP限速 當設備檢測到某一…

Django 創建CSV文件

Django使用Python內置的CSV庫來創建動態的CSV&#xff08;逗號分隔值&#xff09;文件。我們可以在項目的視圖文件中使用這個庫。 讓我們來看一個例子&#xff0c;這里我們有一個Django項目&#xff0c;我們正在實現這個功能。創建一個視圖函數 getfile() 。 Django CSV例子 …

HTTPS為何仍有安全漏洞?解析加密協議下的攻擊面

本文深度剖析HTTPS協議在傳輸層、證書體系、配置管理三個維度的安全盲區&#xff0c;揭示SSL/TLS加密掩蓋下的11類攻擊路徑。基于Equifax、SolarWinds等重大事件的技術復盤&#xff0c;提供包含自動化證書巡檢、動態協議升級、加密流量威脅檢測的立體防御方案。 HTTPS不等于絕…

MyBatis 動態 SQL 使用詳解

&#x1f31f; 一、什么是動態 SQL&#xff1f; 動態 SQL 是指根據傳入參數&#xff0c;動態拼接生成 SQL 語句&#xff0c;不需要寫多個 SQL 方法。MyBatis 提供了 <if>、<choose>、<foreach>、<where> 等標簽來實現這類操作 ? 二、動態 SQL 的優點…

樂觀鎖與悲觀鎖的使用場景

悲觀鎖的應用場景 悲觀鎖的基本思想是假設并發沖突會發生&#xff0c;因此在操作數據時會先鎖定數據&#xff0c;直到完成操作并提交事務后才釋放鎖。這種方式適用于寫操作較多、并發沖突可能性較高的場景。 高寫入比例的數據庫操作&#xff1a;如果系統中有很多寫操作&#x…

cpp(c++)win 10編譯GDAL、PROJ、SQLite3、curl、libtiff

cpp&#xff08;c&#xff09;編譯GDAL、PROJ、SQLite3 Sqlite3libtiffcurlprojGDAL Sqlite3 1、下載 Sqlite3 源碼、工具、二進制預編譯 exe Sqlite3 官網&#xff1a;https://www.sqlite.org/download.html 下載 sqlite-amalgamation-3430200.zipsqlite-dll-win64-x64-3430…

【愚公系列】《高效使用DeepSeek》062-圖書庫存管理

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

鏈表算法中常用操作和技巧

目 1.常用技巧 1.1.畫圖 1.2.添加虛擬頭節點 1.3.大膽引入中間變量 1.4.快慢雙指針 1.4.1判斷鏈表是否有環 1.4.2找鏈表中環的入口 ?2.常用操作 2.1. 創建一個新節點 2.2.尾插 2.3.頭插 1.常用技巧 1.1.畫圖 畫圖可以讓一些抽象的文字語言更加形象生動 畫圖&#…