力扣hot100二刷——鏈表

第二次刷題不在idea寫代碼,而是直接在leetcode網站上寫,“逼”自己掌握常用的函數。

標志掌握程度解釋辦法
?Fully 完全掌握看到題目就有思路,編程也很流利
??Basically 基本掌握需要稍作思考,或者看到提示方法后能解答
???Slightly 稍微掌握需要看之前寫過的代碼才能想起怎么做多做
????absolutely no 完全沒有掌握需要看題解才知道怎么做
?????有難度的高頻題需要看題解才知道怎么做,而且過幾天就忘了這道題怎么做了背背
22??Easy鏈表160/相交鏈表哈希表法,時間復雜度始終是O(M+N) 雙指針法,時間復雜度最差是O(M+N),指針A遍歷完鏈表A再接著遍歷鏈表B;指針B遍歷完鏈表A再遍歷鏈表A,兩者走了相同距離時,即為答案(相交節點或者空節點)
23?Easy鏈表206/反轉鏈表定義三個指針:lastNode curNode nextNode,curNode 從頭節點開始遍歷直到curtNode == null時結束遍歷ListNode lastNode = null;
24???Easy鏈表234/回文鏈表錯誤的思路:先翻轉鏈表,再比較翻轉前后的鏈表,這樣做翻轉前的鏈表已經不存在了,沒法比較 正確思路:快慢指針先找到鏈表的中點,然后反轉后半段鏈表,再比較鏈表的前半段和后半段
25?Easy鏈表141/環形鏈表易錯點:首先要排除輸入為null的情況:if(head == null) return null; 快慢指針遍歷鏈表,如果兩指針相同則存在環形
26??Medium鏈表142/環形鏈表II在141題的基礎上,多加一部即可 快慢指針相遇,證明有環 快指針指向頭節點,慢指針不變,兩指針同時向后移動,直至相遇即為環節點
27???Easy鏈表21/合并兩個有序鏈表思路很簡單,但程序有細節要注意 定義兩個指針,分別指向兩個鏈表的頭節點 當兩個指針所指節點均不為空時,比較它們的大小,誰小就加在新鏈表后,并且后移該指針 跳出循環后,可能兩條鏈表的節點都被加入新鏈表了,也有可能有一條鏈表還有節點沒被加入新鏈表,所以要手動判斷并加入。
28?Medium鏈表2/兩數相加要注意,判斷最后的進位是否 > 0,> 0的話,鏈表最后再加上這個進位 對應位相加(要判斷,節點是否為空,為空的話相當于加 0) 求出當前節點的值:(進位 + 節點1的值 + 節點2的值)% 10 更新進位:(進位 + 節點1的值 + 節點2的值)/ 10 記得后移指針
29???Medium鏈表19/刪除鏈表的倒數第N個節點定義快慢指針,快指針比慢指針快n個節點。 要注意的是,如果快指針到達隊尾,說明要刪的恰好是頭節點,那么直接返回第二個節點 快慢指針向后移,直到快指針到達盡頭(下個節點為空),此時要刪的就是慢指針的下個節點
30???Medium鏈表24/兩兩交換鏈表中的節點哨兵節點+遍歷鏈表的同時交換相鄰節點 創建一個哨兵節點,并維護pre、cur、next三個節點 當pre.nextnull&&pre.next.nextnull 時,遍歷鏈表,并交換節點。 程序開始先排除head == null || head.next == null的情況
31????Hard鏈表25/K個一組反轉鏈表把鏈表分為三部分:已經反轉的、要反轉的、未反轉的 找到此次要反轉的部分的尾節點end,并把尾節點的下個節點置空;end.next == null ,結束遍歷 反轉此部分鏈表(重點) 將該部分鏈表加到已經反轉部分的后面
32???Medium鏈表138/隨機鏈表的復制使用哈希表來保存節點 遍歷鏈表,將節點保存到哈希表Map<Node, Node> 再次遍歷鏈表,將原節點中的next、random拷貝到新節點中
33????Medium鏈表148/排序鏈表歸并排序 快慢指針將鏈表分為兩半,一半為left,一半為right,如果head == null || head.next == null說明不可以再分了,就結束遞歸 left鏈表和right鏈表進行比較排序并合并,算法如21題。 最后要將不為空的節點加入到鏈表最后,再返回頭節點。
34???Hard鏈表23/合并k個升序鏈表升序的優先級隊列 PriorityQueue 遍歷數組,將每個鏈表的頭節點加入到隊列中 當隊列不為空時,循環執行以下操作 2.1 移除隊頭節點(最小節點) 2.2 將該節點的下一個節點加入到隊列(如果不為null的話)
35?????Medium鏈表146/LRU緩存雙向鏈表+哈希表 哈希表保存<key, Node>,便于查找key 建立雙向鏈表類與dummy哨兵節點 LRUCache(int capacity) 初始化容量、dummy節點的pre和next get操作 getKey()函數查找key是否存在,存在則返回value,否則返回-1; put操作 getKey()函數查找key是否存在,存在則更改原來的value為新的value;否則putFront()函數將key加入到最前面,并且要判斷是否超出容量,超出的話要remove()刪除尾節點 getkey() 查找哈希表中是否存在key,存在則putFront()函數將該節點加入到最前面,并返回Node,否則返回null putFront() 將節點加入到最前面,也就是dummy的后面 remove() 刪除尾節點,也就是dummy的前面PriorityQueue pq = new PriorityQueue<>((a,b) -> a.val - b.val);

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

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

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

相關文章

Word 小黑第2套

對應大貓42 Word1 從文件中導入新樣式 樣式組 -管理樣式 -導入導出 -關閉Normal文件 -打開文件 -修改文件 -選中所需 -復制 調整字符寬度 調整字符間距 -字體組 加寬 適當修改磅值 文字效果通過文字組修改 另起一頁&#xff0c;分隔符&#xff08;布局 -分隔符 -分節符 -下一…

iTextSharp-PDF批量導出

HTML轉PDF批量導出速度太慢且使用Spire.pdf.dll限制頁簽10后需要開通會員才能使用-做出優化 環境&#xff1a;U9 - UI插件 需求&#xff1a;選擇需要導出的客戶查詢對應對賬數據批量導出PDF并彈出下載框保存到默認位置 using System; using System.Collections.Generic; us…

【RabbitMQ】Spring Boot 結合 RabbitMQ 完成應用間的通信

&#x1f525;個人主頁&#xff1a; 中草藥 &#x1f525;專欄&#xff1a;【中間件】企業級中間件剖析 Spring 框架與 RabbitMQ 的整合主要通過 Spring AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;模塊實現&#xff0c;提供了便捷的消息隊列開發能力。 引…

CDefView::_GetPIDL函數分析之ListView_GetItem函數的參數item的item.mask 為LVIF_PARAM

CDefView::_GetPIDL函數分析之ListView_GetItem函數的參數item的item.mask 為LVIF_PARAM 第一部分&#xff1a; 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …

MongoDB分頁實現方式對比:PageRequest vs Skip/Limit

MongoDB分頁實現方式對比&#xff1a;PageRequest vs Skip/Limit 一、基本概念1.1 PageRequest分頁1.2 Skip/Limit分頁 二、主要區別2.1 使用方式2.2 參數計算2.3 適用場景PageRequest適用場景&#xff1a;Skip/Limit適用場景&#xff1a; 三、性能考慮3.1 PageRequest的性能特…

Manus(一種AI代理或自動化工具)與DeepSeek(一種強大的語言模型或AI能力)結合使用任務自動化和智能決策

一、Manus與DeepSeek差異 十分好奇DeepSeek和Manus究竟誰更厲害些&#xff0c;DeepSeek是知識型大腦&#xff0c;Manus則是全能型執行者。即DeepSeek專注于語言處理、知識整合與專業文本生成。其核心優勢在于海量參數支持的深度學習和知識推理能力&#xff0c;例如撰寫論文、潤…

UI自動化:poium測試庫

以下是關于 poium 測試庫 的詳細介紹&#xff0c;涵蓋其核心功能、使用方法及與原生 Selenium 的對比&#xff0c;幫助快速掌握這一工具&#xff1a; 1. poium 簡介 定位&#xff1a;基于 Selenium 的 Page Object 模式增強庫&#xff0c;專注于簡化元素定位和頁面操作。 核心…

C#結構體(Struct)詳解

在 C# 中&#xff0c;?結構體&#xff08;struct&#xff09;? 是一種值類型數據類型&#xff0c;適用于封裝小型數據組。與類&#xff08;class&#xff09;不同&#xff0c;結構體在棧&#xff08;Stack&#xff09;上分配內存&#xff0c;且賦值時會發生值復制。以下是結構…

UVC攝像頭命令推流,推到rv1126里面去

ffmpeg命令查詢UVC設備 .\ffmpeg.exe -list_devices true -f dshow -i dummy 上圖是查詢UVC設備的效果圖&#xff0c;畫紅框的部分是UVC設備的設備名稱"USB2.0 PC CAMERA"和設備號 "device_pnp_\\?\usb#vid_1908&pid_2310&mi_00#8&39abfe5&0&a…

Linux中的基本指令(上)

目錄 ls指令 判斷linux中文件 pwd指令 認識路徑 ?編輯 絕對路徑/相對路徑 cd指令 簡要理解用戶 理解家目錄 echo指令和printf指令 touch指令 mkdir指令 cat指令 tree指令 rmdir指令和rm指令 man指令 cp指令 which指令 alias 指令 date指令 cal指令 理解…

多數元素——面試經典150題(力扣)

題目 給定一個大小為 n 的數組 nums &#xff0c;返回其中的多數元素。多數元素是指在數組中出現次數 大于 ? n/2 ? 的元素。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 示例 1&#xff1a; 輸入&#xff1a;nums [3,2,3] 輸出&#xff1a;3 …

Qt 數據庫操作(Sqlite)

數據庫簡介 關于數據庫的基礎知識這里就不做介紹了&#xff0c;相關博客可以查看&#xff1a; SQL基礎知識 數據庫學霸筆記 上面博客都寫的比較詳細&#xff0c;本文主要介紹如何使用Qt進行數據庫相關操作&#xff0c;數據庫分為關系型數據庫和非關系型數據&#xff0c;關系…

網絡安全 api 網絡安全 ast技術

隨著應用或者API被攻擊利用已經越來越多&#xff0c;雖然來自開源組件的漏洞加劇了這一現象的發生&#xff0c;但是&#xff0c;其實主要還是在于應用程序或者API本身沒有做好防范&#xff0c;根源在于源代碼本身的質量沒有嚴格把控。AST是指Application Security Testing&…

Mac 配置 Maven JDK

不使用 Homebrew&#xff0c;創建指定版本 JDK 1、官網下載指定版本并安裝……省略 2、vi &#xff5e;/.zshrc 同時要檢查 bash_profile 是否存在。 if [ -f ~/.bash_profile ] ; thensource ~/.bash_profile fiJAVA_HOME_11/Library/Java/JavaVirtualMachines/jdk-11.0.1…

【每日學點HarmonyOS Next知識】拖拽調整列表順序、tab回彈、自定義彈窗this、狀態變量修飾枚舉

1、HarmonyOS 功能實現&#xff08;拖拽調整列表順序&#xff09;&#xff1f; 可參考&#xff1a; import curves from ohos.curves; import Curves from ohos.curvesEntry Component struct ListItemExample {State private arr: number[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]…

Django部署Filemanagement

Pycharm搭建項目安裝虛擬環境 mysqlclient對mysql的安裝&#xff0c;配置有要求 pymsql偽裝成mysqlclient&#xff0c;pymysql可以操縱mysql pip install pymysql操作sql5.7 mysql8.0會出現與pycharm不兼容問題&#xff0c;會報錯&#xff0c;所以降到5.7 # 進入mysql 需要…

【病毒分析】熊貓燒香病毒分析及其查殺修復

目錄 前言 一、樣本概況 1.1 樣本信息 1.2 測試環境及工具 1.3 分析目標 二、具體行為分析 2.1 主要行為 2.1.1 惡意程序對用戶造成的危害 2.2 惡意代碼分析 2.2.1 加固后的惡意代碼樹結構圖(是否有加固) 2.2.2 惡意程序的代碼分析片段 三、解決方案(或總結) 3.1 …

Spring Boot集成Spring Statemachine

Spring Statemachine 是 Spring 框架下的一個模塊&#xff0c;用于簡化狀態機的創建和管理&#xff0c;它允許開發者使用 Spring 的特性&#xff08;如依賴注入、AOP 等&#xff09;來構建復雜的狀態機應用。以下是關于 Spring Statemachine 的詳細介紹&#xff1a; 主要特性 …

數組總和 (leetcode 40

leetcode系列 文章目錄 一、核心操作二、外層配合操作三、核心模式代碼總結 去重方式和之前三數之和一樣&#xff0c;也可以用used數組去重&#xff0c;但本次嘗試使用set去重 一、核心操作 如果count為0了&#xff0c;則證明正好減到了0&#xff0c;就可以收獲&#xff0c;…

sqli-lab靶場學習(八)——Less26-28

前言 25關已經出現了初步的一些關鍵字過濾&#xff0c;通過雙寫可以繞過。后面的關卡&#xff0c;我們會遇到更多關鍵字過濾&#xff0c;需要各種技巧繞過。 Less26 第26關寫了會過濾空格和注釋符。有很多的答案&#xff0c;會用%a0替代空格&#xff0c;但據說這是sqli-labs部…