每日算法-鏈表(2.兩數相加、24.兩兩交換鏈表中的節點、143.重排鏈表)

一.兩數相加

1.1題目描述

1.2題解思路

定義兩個指針l1,l2依次遍歷兩個鏈表,用變量add存儲l1加l2的值,將add的個位數取出來充當新節點的值,然后將add的個位數刪去,即add /=10,循環此操作。

重點分析:

1.跟歸并排序中合并兩個有序數組類似,當兩個鏈表并不是一樣長,其中一個鏈表并沒有遍歷完!!!

2.當兩個鏈表都遍歷完之后,如果add的值為1,則需要再增加一個節點,它的值為1.

1.3.題解代碼

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int add = 0;ListNode* newhead = new ListNode(-1);//創建虛擬頭結點ListNode* cur = newhead;while(l1 && l2){add += l1->val + l2->val;ListNode* tmp = new ListNode(add%10);//將個位存進去add /= 10;cur->next = tmp;l1 = l1->next;l2 = l2->next; cur = cur->next;}while(l1){add += l1->val;ListNode* tmp = new ListNode(add%10);add /= 10;cur->next = tmp;l1 = l1->next;cur = cur->next;}while(l2){add += l2->val;ListNode* tmp = new ListNode(add%10);add /= 10;cur->next = tmp;l2 = l2->next; cur = cur->next;}//判斷邊界情況if(add == 1){ListNode* tmp = new ListNode(1);cur->next = tmp;cur = cur->next;}return newhead->next;}
};

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

2.1題目描述

2.2題解思路

首先添加虛擬頭結點,遍歷這個鏈表,定義四個指針,prev,cur,next,nnext,模擬實現兩個相鄰鏈表翻轉,然后更新prev,cur,next,nnext,循環此操作

重點分析:

1.當給的鏈表為空或者只有一個數據時,直接返回。

2.循環結束條件,當是偶數個數字時,cur!=nullptr,當是奇數個數字時,next != nullptr。

2.3題解代碼

class Solution {
public:ListNode* swapPairs(ListNode* head) {if(!head || !head->next) return head;ListNode* newhead = new ListNode(-1);//虛擬頭節點newhead->next = head;ListNode* prev = newhead,*cur = prev->next,*next = cur->next,*nnext = next->next;while(cur && next){prev->next = next;next->next = cur;cur->next = nnext;prev = cur;cur = nnext;if(cur )next = cur->next;if(next) nnext = next->next;}return newhead->next;}
};

三.重排鏈表

3.1題目描述

3.2題解思路

1.找到鏈表的中間節點(快慢雙指針)

2.將第二個鏈表逆序(頭插法)

注意區分開curnext與cur->next,tmpnext與tmp->next

3.合并兩個鏈表

注意需要把第一個鏈表的最后一個節點的next置空

3.3題解代碼

class Solution {
public:void reorderList(ListNode* head) {if(!head->next || !head->next->next) return;        ListNode* newhead = new ListNode(-1);//添加虛擬頭結點            //找到鏈表的中間節點(快慢雙指針)    ListNode* q1 = head,*q2 = head;while( q2->next && q2->next->next){q1 = q1->next;q2 = q2->next->next;}//反轉q1后面的節點(頭插法)ListNode* tmp = new ListNode(-2);ListNode* cur = q1->next,*curnext = cur->next,*tmpnext = tmp->next;while(cur){cout<<cur->val;//頭插tmp->next = cur;cur->next = tmpnext;//更新指針cur = curnext;if(cur) curnext = cur->next;tmpnext = tmp->next;}//合并兩個鏈表q1->next = nullptr;//注意!!!ListNode* cur1 = head,*cur2 = tmp->next;cur = newhead;while(cur1 || cur2){if(cur1){cur->next = cur1;cur1 = cur1->next;cur = cur->next;cur->next = nullptr;}if(cur2){cur->next = cur2;cur2 = cur2->next;cur = cur->next;cur->next = nullptr;}}}
};

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

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

相關文章

Flutter學習 滾動組件(1):ListView基本使用

目錄 一、ListView構造方法1.1 常規方法1.2 ListView.builder1.3 ListView.separated 二、自定義ListView樣式和布局&#xff1a;三、ListView性能優化&#xff1a;總結&#xff1a; 一、ListView構造方法 主要以下幾種方法&#xff1a; 常規方法&#xff0c;直接使用默認的構…

ESLint常見錯誤

1、Strings must use singlequote —— 字符串必須使用單引號 2、Extra semicolon semi——額外的分號&#xff1a;一行語句結尾不能添加分號 3、Unexpected trailing comma —— 行尾多了一個逗號 4、Newline required at end of file but not found ——文件結尾必須要新加…

Windows進行磁盤分區/擴容

Windows進行磁盤分區/擴容 導航 文章目錄 Windows進行磁盤分區/擴容導航分區教程壓縮卷教程 用Windows自帶的磁盤管理進行分區/擴容&#xff0c;但有個東西需要說明下是&#xff1a; 物理特性限制 磁盤分區的物理特性決定了擴容操作的方向。在磁盤上&#xff0c;數據是線性存儲…

獲取類路徑

分析 String pathThread.currentThread().getContextClassLoader().getResource("log").getPath(); 這行代碼用于獲取類路徑(classpath)下名為"log"的資源的文件系統路徑&#xff0c;我來詳細解析它的執行過程和潛在問題&#xff1a; 1. 代碼分解解析 j…

安裝fvm可以讓電腦同時管理多個版本的flutter、flutter常用命令、vscode連接模擬器

打開 PowerShellfvm安裝 dart pub global activate fvm安裝完成后&#xff0c;如果顯示FVM無法識別&#xff0c;那么需要去添加環境變量path添加這個&#xff1a;C:\Users\Administrator\AppData\Local\Pub\Cache\bin 常用命令 fvm releases 查看用戶可以裝的flutter版本fvm l…

Kaggle-Disaster Tweets-(二分類+NLP+模型融合)

Disaster Tweets 題意&#xff1a; 就是給出一個dataframe包含text這一列代表著文本&#xff0c;文本會有一些詞&#xff0c;問對于每條記錄中的text是真關于災難的還是假關于災難的。 比如我們說今天作業真多&#xff0c;這真是一場災難。實際上這個災難只是我們調侃而言的。…

Flutter 2025 Roadmap

2025 這個路線圖是有抱負的。它主要代表了我們這些在谷歌工作的人收集的內容。到目前為止&#xff0c;非Google貢獻者的數量超過了谷歌雇傭的貢獻者&#xff0c;所以這并不是一個詳盡的列表&#xff0c;列出了我們希望今年Flutter能夠出現的所有令人興奮的新事物&#xff01;在…

如何通過API接口獲取淘寶商品價格?實操講解

要通過API接口獲取淘寶商品價格&#xff0c;需使用淘寶開放平臺&#xff08;Taobao Open Platform, TOP&#xff09;提供的商品詳情API&#xff08;如taobao.item.get或taobao.item_get&#xff09;。以下是完整的實操步驟&#xff1a; 一、前期準備 注冊淘寶開放平臺賬號 訪問…

按鍵精靈安卓/ios腳本輔助工具開發教程:如何把界面配置保存到服務器

在使用按鍵精靈工具輔助的時候&#xff0c;多配置的情況下&#xff0c;如果保存現有的配置&#xff0c;并且讀取&#xff0c;尤其是游戲中多種任務并行情況下&#xff0c;更是需要界面進行保存&#xff0c;簡單分享來自紫貓插件的配置保存服務器寫法。 界面例子&#xff1a; …

DP34 【模板】前綴和 -- 前綴和

目錄 一&#xff1a;題目 二&#xff1a;算法原理 三&#xff1a;代碼實現 一&#xff1a;題目 題目鏈接&#xff1a;【模板】前綴和_牛客題霸_牛客網 二&#xff1a;算法原理 三&#xff1a;代碼實現 #include <iostream> #include <vector> using namespac…

關于我的服務器

最近我買了臺騰訊云服務器&#xff0c;然后新手小白只會用寶塔。。。 安裝完之后默認的端口是8888&#xff0c;打開面板就會提示我有風險。然后 我改了端口之后&#xff0c;怎么都打不開。 于是 學到了幾句命令可以使用&#xff1a; //查看端口是否已經修改成功 cat www/se…

機器學習常用算法總結

1. 概述 機器學習的定義是對于某類任務T和性能度量P&#xff0c;如果一個計算機程序在T上其性能P隨著經驗E而自我完善&#xff0c;那么我們就稱這個系統從經驗E中學習&#xff0c;機器學習是人工智能的一種方法&#xff0c;它通過在大量數據中學習隱藏的規則&#xff0c;模式和…

ns-3中UDP飽和流發包時間間隔設置最合理值

ns3的官方手冊很全&#xff0c;相關書籍也是有的&#xff0c;官網先貼在這里&#xff1a; ns-3 | a discrete-event network simulator for internet systemsa discrete-event network simulator for internet systemshttps://www.nsnam.org/相關的腳本介紹也都有一些&#xf…

Windsurf代碼依賴檢查導入

目錄 1. 在全局配置中根據需求設置檢查的文件&#xff0c;以python為例 2. 執行命令生成requirements.txt文件&#xff0c;此操作可以將當前代碼所需的依賴全部寫入 3. 在Cascade對話窗口輸入detect-dependencies查詢 4. 根據查詢出來的結果優化requirements.txt&#xff0c;可…

復變函數摘記3

復變函數摘記3 5. 留數5.1 可去奇點、極點、本性奇點5.2 零點與極點的關系5.3 在無窮遠點處的情形5.4 留數 5. 留數 \quad 如果函數 f ( z ) f(z) f(z) 在 z 0 z_0 z0? 及 z 0 z_0 z0? 的鄰域內處處可導&#xff0c;那么稱 f ( z ) f(z) f(z) 在點 z 0 z_0 z0? 處解析。…

vscode格式化為什么失效?自動保存和格式化(Prettier - Code formatter,vue-format)

vscode自動格式化保存最終配置 博主找了好多的插件&#xff0c;也跟著教程配置了很多&#xff0c;結果還是沒有辦法格式化&#xff0c;最終發現了一個隱藏的小齒輪&#xff0c;配置完后就生效了 關鍵步驟 關鍵配置 一定要點小齒輪&#xff01;&#xff01;&#xff01; 這個小…

Framer Motion簡介

Framer Motion 是什么&#xff1f; Framer Motion 是一個 用于 React 的現代動畫庫&#xff0c;專為創建流暢、高性能且富有表現力的動畫而設計。它不僅適合簡單的 UI 動效&#xff0c;也能優雅地實現復雜的動畫編排與手勢交互。 &#x1f680; 為什么選擇 Framer Motion&…

多種方案對比實現 Kaggle 比賽介紹進行行業分類

Kaggle 平臺匯集了大量來自不同行業的數據科學競賽&#xff0c;但這些比賽的標題或簡介往往表述多樣、不易直接歸類。無論是做項目歸檔、行業研究&#xff0c;還是搭建競賽推薦系統&#xff0c;都需要一個可靠的方法來將比賽自動歸入對應行業標簽。 本教程提供使用 HuggingFac…

Android Jni(二)加載調用第三方 so 庫

文章目錄 Android Jni&#xff08;二&#xff09;加載調用第三方 so 庫前置知識CPU架構 ABI 基本步驟1、將第三方 SO 庫文件放入項目中的正確位置&#xff1a;2. 創建 JNI 接口3. 實現 JNI 層代碼4、配置 CMake 常見問題解決1、UnsatisfiedLinkError&#xff1a;2、函數找不到&…

服務器本地搭建

socket函數 它用于創建一個新的套接字&#xff08;socket&#xff09;。 函數原型 #include <sys/socket.h> int socket(int domain, int type, int protocol);參數解釋 domain&#xff1a;它指定了通信所使用的協議族&#xff0c;常見的取值如下&#xff1a; AF_INET…