<習題集><LeetCode><鏈表><2/19/21/23/24>

目錄

2. 兩數相加

19. 刪除鏈表的倒數第 N 個結點

21. 合并兩個有序鏈表

23. 合并 K 個升序鏈表

24. 兩兩交換鏈表中的節點



2. 兩數相加

https://leetcode.cn/problems/add-two-numbers/

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//head是cur鏈表頭節點,cur用于記錄相加和的鏈表;ListNode head = new ListNode();ListNode cur = head;//進位標志;int flag = 0;//兩個用于相加的鏈表都走到null,結束;while(l1!=null || l2!=null){int l1Val = l1==null ? 0 : l1.val;int l2Val = l2==null ? 0 : l2.val;//計算和;int sum = l1Val+l2Val+flag;//新建節點加入cur鏈表中;cur.next = new ListNode(sum%10);//判斷是否需要進位;if(sum>=10){flag=1;}else {flag=0;}//判斷兩個用于相加的鏈表是否走到null,沒到的才繼續走;if(l1!=null){l1 = l1.next;}if(l2!=null){l2 = l2.next;}//cur鏈表也向后移動;cur = cur.next;}//走到這里代表兩個鏈表已經遍歷完畢;//但是可能最后一次相加也產生了進位,因此在這里要判斷;if(flag == 1){cur.next = new ListNode(1);}//頭節點是空值,返回頭節點的下一節點;return head.next;}

19. 刪除鏈表的倒數第 N 個結點

https://leetcode.cn/problems/remove-nth-node-from-end-of-list/

    public ListNode removeNthFromEnd(ListNode head, int n) {//創建快慢指針,兩個指針的next為head;ListNode fast = new ListNode();ListNode slow = new ListNode();fast.next = head;slow.next = head;//記錄慢指針的頭節點,用于返回;ListNode root = slow;//快指針先走n步;for (int i=n;i>0;i--){fast = fast.next;//處理n大于鏈表長度的情況;if(fast == null){return null;}}//依次移動快慢指針,直到快指針的next為null;//此時代表慢指針到達要刪除的元素的前一位值;while (fast.next != null){fast = fast.next;slow = slow.next;}//刪除下一元素;slow.next = slow.next.next;//返回;return root.next;}

21. 合并兩個有序鏈表

https://leetcode.cn/problems/merge-two-sorted-lists/description/

    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {//創建頭節點和一個用于移動的節點cur;ListNode head = new ListNode(0);ListNode cur = head;//邊移動,邊比較節點的值,并將比較結果賦值,直到有一個鏈表走完;while(list1 != null && list2 != null){if(list1.val <= list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}//判斷是哪個鏈表走完了,把另一個鏈表在尾部續上;if(list1 == null){cur.next = list2;}if(list2 == null){cur.next = list1;}//返回記錄的head;return head.next;}

23. 合并 K 個升序鏈表

https://leetcode.cn/problems/merge-k-sorted-lists/description/

    public ListNode mergeKLists(ListNode[] lists) {//建立鏈表;ListNode root = null;//不斷將鏈表元素兩兩合并;for (ListNode list : lists) {root = mergeTwoLists(root, list);}//返回鏈表;return root;}public ListNode mergeTwoLists(ListNode list1, ListNode list2) {//創建頭節點和一個用于移動的節點cur;ListNode head = new ListNode(0);ListNode cur = head;//邊移動,邊比較節點的值,并將比較結果賦值,直到有一個鏈表走完;while(list1 != null && list2 != null){if(list1.val <= list2.val){cur.next = list1;list1 = list1.next;}else{cur.next = list2;list2 = list2.next;}cur = cur.next;}//判斷是哪個鏈表走完了,把另一個鏈表在尾部續上;if(list1 == null){cur.next = list2;}if(list2 == null){cur.next = list1;}//返回記錄的head;return head.next;}

24. 兩兩交換鏈表中的節點

https://leetcode.cn/problems/swap-nodes-in-pairs/

    public ListNode swapPairs(ListNode head) {//基本思路就是站在前一個節點(后續簡稱0節點),向后望兩個節點。//并對這兩個節點做順序調換,之后0節點向后移動;//創建移動的節點指針,這個節點指向head,這個就是一開始的0節點;ListNode cur = new ListNode();cur.next = head;//記錄頭節點地址,用于返回;ListNode root = cur;while(true){//沒有后續節點的情況;if(cur.next == null){break;}//仍存在兩個后續節點的情況;if(cur.next.next != null){//記錄下一次需要調整順序的節點;ListNode temp2 = cur.next.next.next;//調整順序;ListNode temp1 = cur.next;cur.next = cur.next.next;cur = cur.next;cur.next = temp1;//將節點移動到下一次調整的0節點處;cur = cur.next;cur.next = temp2;}else{//只剩一個節點的情況;break;}}//代碼運行到這代表,0節點之后已經沒有節點或只剩一個節點;//返回記錄的頭節點;return root.next;}

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

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

相關文章

pdf轉png的兩種方法

背景:pdf在一般公司,沒有辦公系統,又不是word/wps/Office系統,讀不出來,識別不了,只能將其轉化為圖片png,因此在小公司或者一般公司就需要pdf轉png的功能。本文將詳細展開。 1、fitz庫(也就是PyMuPDF) 直接pip安裝PyMuPDF即可使用,直接使用fitz操作,無需其他庫。 …

Go語言實現深度學習的正向傳播和反向傳播

文章目錄 開發前言開發理論圖解理論數據類型數學函數數據節點統一抽象變量數據節點常量數據節點單目運算封裝雙目運算封裝算子節點統一抽象基礎算子加法算子減法算子乘法算子除法算子指數算子對數算子正切算子正弦算子余弦算子數據流圖正向傳播反向傳播正向訓練反向訓練運行示例…

我的記事本

url uniform resource locator. 統一資源定位符 請求狀態碼 1XX:信息響應 2XX:成功響應 3XX:重定向消息 4XX:客戶端錯誤響應 5XX:服務器端錯誤響應 IP地址分類 本機回環IP地址&#xff1a;127.0.0.1 &#xff5e; 127.255.255.254 局域網IP(私網IP) 192.168.0.0 &am…

船舶機電設備振動數據采集監控系統解決方案

船舶運行中&#xff0c;通常需要通過振動數據采集系統對船舶的各個機電設備運行進行監控&#xff0c;有助于在設備故障時快速預警&#xff0c;進行診斷、分析和維護&#xff0c;保證船舶機電設備正常工作&#xff0c;從而確保工作人員及船舶的安全。 船舶各種機電設備會產生大…

vLLM介紹

簡介 vLLM 工程github地址 Paged attention論文地址 vLLM開發者介紹 Woosuk Kwon vLLM: A high-throughput and memory-efficient inference and serving engine for LLMs. SkyPilot: A framework for easily and cost effectively running machine learning workloads on …

【模型量化】神經網絡量化基礎及代碼學習總結

1 量化的介紹 量化是減少神經網絡計算時間和能耗的最有效的方法之一。在神經網絡量化中&#xff0c;權重和激活張量存儲在比訓練時通常使用的16-bit或32-bit更低的比特精度。當從32-bit降低到8-bit&#xff0c;存儲張量的內存開銷減少了4倍&#xff0c;矩陣乘法的計算成本則二…

ALNS算法中隨機化重要性的評價

文章概述 本研究分析了在海上提貨和交付問題中使用的ALNS元啟發式算法中的隨機化成分。研究者提出了簡單的確定性替代方案&#xff0c;并通過實驗比較了隨機化和確定性成分的性能。結果表明&#xff0c;初始實現的簡單確定性替代方案能夠與隨機化成分的性能相匹配。這項研究為…

IDEA使用git從遠程倉庫獲取項目

將地址填入url中 然后直接clone就行

《Easy3d+Qt+VTK》學習

《Easy3dQtVTK》學習-1、編譯與配置 一、編譯二、配置注 一、編譯 1、 資源下載&#xff1a;easy3d giuhub 2、解壓縮 3、用qt打開CMakeLists.txt即可 4、點擊項目&#xff0c;選擇debug或者release&#xff0c;圖中3處可自行選擇&#xff0c;因為我的qt版本是6&#xff0c…

Java集合大總結——Collections工具類

簡單闡述 參考操作數組的工具類&#xff1a;Arrays&#xff0c;Collections 是一個操作 Set、List 和 Map 等集合的工具類。 常用方法 Collections 中提供了一系列靜態的方法對集合元素進行排序、查詢和修改等操作&#xff0c;還提供了對集合對象設置不可變、對集合對象實現…

jdbc4.MySQLSyntaxErrorException: Query was empty

出現這種異常的原因&#xff0c;有幾個要點 檢查sql語句是否正確檢查你的條件是否真的被sql使用 背景 delete sql在xml中&#xff0c;賦值list對象&#xff0c;計劃進行批量刪除的sql&#xff0c;這時出現了異常&#xff0c;檢查后&#xff0c;發現這個list竟然是空&#xff…

Linux下的軟硬鏈接

Linux下的軟硬鏈接 Linux下的硬鏈接和軟鏈接是一種文件系統級別的鏈接方式&#xff0c;它們允許你在不同的目錄中創建指向同一個文件的引用。硬鏈接和軟鏈接的主要區別在于它們的實現方式和刪除方式。 硬鏈接&#xff08;Hard Link&#xff09;&#xff1a; 硬鏈接是指向同一…

在linux上如何運用虛擬數據優化器VDO

本章主要介紹虛擬化數據優化器。 什么是虛擬數據優化器VDO 創建VDO設備以節約硬盤空間 16.1 了解什么是VDO VDO全稱是Virtual Data Optimize&#xff08;虛擬數據優化)&#xff0c;主要是為了節省硬盤空間。 現在假設有兩個文件file1和 file2&#xff0c;大小都是10G。file…

cpu 300% 爆滿 內存占用不高 排查

top查詢 cpu最高的PID ps -ef | grep PID 查看具體哪一個jar服務 jstack -l PID > ./jstack.log 下載/打印進程的線程棧信息 可以加信息簡單分析 或進一步 查看堆內存使用情況 jmap -heap Java進程id jstack.log 信息示例 Full thread dump Java HotSpot(TM) 64-Bit Se…

橫向擴展統一存儲與備份服務器功能

Infortrend 更新了GS&#xff0c;GSe&#xff0c;GSe Pro統一存儲系列的備份服務器功能。該功能降低數據備份成本&#xff0c;并提供靈活的備份策略。通過備份服務器功能&#xff0c;用戶可以通過多種途徑實現數據備份&#xff0c;包括公有云&#xff08;兼容S3&#xff09;、文…

為內核新增字符驅動模塊

1. 放置代碼 在./source/driver/char下放置模塊文件夾 2. Makefile和Kconfig makefile文件參考 obj-$(AAA_LED) AAA-led.oKconfig文件參考 config AAA_LEDtristate "Phytium macb led control module"depends on XXXdefault mhelpIf you have a n…

C/C++,樹算法——二叉樹的插入(Insert)算法之源程序

1 文本格式 #include<iostream> using namespace std; // A BTree node class BTreeNode { int* keys; // An array of keys int t; // Minimum degree (defines the range for number of keys) BTreeNode** C; // An array of child pointers int …

.NET中有多少種定時器

.NET中至少有6種定時器&#xff0c;每一種定時器都有它的用途和特點。根據定時器的應用場景&#xff0c;可以分為UI相關的定時器和UI無關的定時器。本文將簡單介紹這6種定時器的基本用法和特點。 UI定時器 .NET中的UI定時器主要是WinForm、WPF以及WebForm中的定時器。分別為&am…

dell服務器重啟后顯示器黑屏

1.硬件層面&#xff1a;觀察主機的指示燈 &#xff08;1&#xff09;指示燈偏黃&#xff0c;硬件存在問題&#xff08;內存條有靜電&#xff0c;拔出后用橡皮擦擦拭&#xff1b;或GPU松動&#xff09; a.電源指示燈黃&#xff0c;閃爍三下再閃爍一下&#xff0c;扣下主板上的紐…

Python Appium Selenium 查殺進程的實用方法

一、前置說明 在自動化過程中&#xff0c;經常需要在命令行中執行一些操作&#xff0c;比如啟動應用、查殺應用等&#xff0c;因此可以封裝成一個CommandExecutor來專門處理這些事情。 二、操作步驟 # cmd_util.pyimport logging import os import platform import shutil i…