鏈表的回文結構OJ

鏈表的回文結構_牛客題霸_牛客網對于一個鏈表,請設計一個時間復雜度為O(n),額外空間復雜度為O(1)的算法,判斷其是否為。題目來自【牛客題霸】icon-default.png?t=N7T8https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId=49&&tqId=29370&rp=1&ru=/activity/oj&qru=/ta/2016test/question-ranking

題目

對于一個鏈表,請設計一個時間復雜度為O(n),額外空間復雜度為O(1)的算法,判斷其是否為回文結構。

給定一個鏈表的頭指針A,請返回一個bool值,代表其是否為回文結構。保證鏈表長度小于等于900。

測試樣例:
1->2->2->1
返回:true

?本題用到了鏈表的逆轉和鏈表的中間節點的應用

首先說一下鏈表的中間節點的查找

struct ListNode* midfind(struct ListNode* head)
{struct ListNode*fast,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;}return slow;}

?中間結點的查找主要運用到了快慢指針的遍歷。快指針比慢指針多走一步,最后快指針走到NULL,或者快指針的next為NULL停止。

再來說一下鏈表的逆轉

struct ListNode* reverselist(struct ListNode*head)
{struct ListNode*prve= NULL;struct ListNode*cur=head;while(cur){struct ListNode*next=cur->next;cur->next=prve;prve=cur;cur=next;}return prve;
}

逆轉的本質是要先定義一個空指針,如上代碼的*prve,然后下一步就開始保存cur的下一個指針,防止cur被覆蓋,導致下一個節點丟失。最后返回prve即可。原因是這是的cur已經指向NULL,所以無意義

最后是實現鏈表回文(注意:C++兼容C語言)

#include <algorithm>
class PalindromeList {
public:struct ListNode* midfind(struct ListNode* head)
{struct ListNode*fast,*slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;}return slow;}
struct ListNode* reverselist(struct ListNode*head)
{struct ListNode*prve= NULL;struct ListNode*cur=head;while(cur){struct ListNode*next=cur->next;cur->next=prve;prve=cur;cur=next;}return prve;
}bool chkPalindrome(ListNode* A) {
struct ListNode* mid=midfind(A);
struct ListNode* revermid=reverselist(mid);
while(revermid&&A)
{if(revermid->val!=A->val){return false;
}
revermid=revermid->next;A=A->next;}return true;
}};

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

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

相關文章

CodeMeter助力Hilscher,推動實現全球智能制造連接解決方案

Hilscher的旗艦店為開放工業4.0聯盟&#xff08;OI4&#xff09;社區提供了應用商店的便捷和開放性&#xff0c;將這一概念引入工業領域。該商店依托CodeMeter的許可證管理和加密保護&#xff0c;為工業用戶提供了豐富的應用和解決方案庫&#xff0c;滿足他們在車間自動化和連接…

2020年06月C語言二級真題

計算矩陣邊緣元素之和 題目描述 輸入一個整數矩陣&#xff0c;計算位于矩陣邊緣的元素之和。 所謂矩陣邊緣的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 輸入格式 第一行分別為矩陣的行數n和列數m&#xff0c;兩者之間以一個空格分開。 接下來輸…

WPF中讀取Excel文件的內容

演示效果 實現方案 1.首先導入需要的Dll(這部分可能需要你自己搜一下) Epplus.dll Excel.dll ICSharpCode.SharpZipLib.dll 2.在你的解決方案的的依賴項->添加引用->瀏覽->選擇1中的這幾個Dll點擊確定。(添加依賴) 3.然后看代碼內容 附上源碼 using Excel; usi…

計網復習資料

一、選擇題&#xff08;每題2分&#xff0c;共40分&#xff09; 1. Internet 網絡本質上屬于&#xff08; &#xff09;網絡。 A.電路交換 B.報文交換 C.分組交換 D.虛電路 2.在 OSI 參考模型中,自下而上第一個提供端到端服務的是( )。 A.數據鏈路層 B.傳輸…

Thinkphp使用Elasticsearch查詢

在Thinkphp中調用ES&#xff0c;如果自己手寫json格式的query肯定是很麻煩的。我這里使用的是ONGR ElasticsearchDSL 構建 ES 查詢。ongr ElasticsearchDSL 的開源項目地址&#xff1a;GitHub - ongr-io/ElasticsearchDSL: Query DSL library for Elasticsearch。ONGR Elastics…

100V 15A TO-252 N溝道MOS管 HC070N10L 惠海

MOS管的工作原理是基于在P型半導體與N型半導體之間形成的PN結&#xff0c;通過改變柵極電壓來調整溝道內載流子的數量&#xff0c;從而改變溝道電阻和源極與漏極之間的電流大小。由于MOS管具有輸入電阻高、噪聲小、功耗低等優點&#xff0c;它們在大規模和超大規模集成電路中得…

package.json中resolutions的使用場景

文章目錄 用途配置示例使用方法注意事項和peerDependencies有什么不同peerDependenciesresolutions 總結 ?創作者&#xff1a;全棧弄潮兒 &#x1f3e1; 個人主頁&#xff1a; 全棧弄潮兒的個人主頁 &#x1f3d9;? 個人社區&#xff0c;歡迎你的加入&#xff1a;全棧弄潮兒的…

git【工具軟件】分布式版本控制工具軟件

一、Git 的介紹 git軟件的作用&#xff1a;管理軟件開發項目中的源代碼文件。 常用功能&#xff1a; 倉庫管理、文件管理、分支管理、標簽管理、遠程操作 功能指令&#xff1a; add&#xff0c;commit&#xff0c;log&#xff0c;branch&#xff0c;tag&#xff0c;remote…

Ubuntu Linux LTS 24.04 AMD64 桌面版安裝記錄

下載iso aria2c -x 4 -s 12 "https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/24.04/ubuntu-24.04-desktop-amd64.iso" "https://mirrors.163.com/ubuntu-releases/24.04/ubuntu-24.04-desktop-amd64.iso" "https://mirrors.zju.edu.cn/ubuntu…

[pyradiomics][python]pyradiomics所有whl文件下載地址匯總

源碼地址&#xff1a;https://github.com/AIM-Harvard/pyradiomics pyradiomics是一個開源的Python軟件包&#xff0c;專門用于從醫學影像中提取高通量的定量特征&#xff0c;這些特征被稱為影像組學(Radiomics)特征。以下是關于pyradiomics的詳細介紹&#xff1a; 一、基本概…

華為端云一體化開發 (起步1.0)(HarmonyOS學習第七課)

官方文獻&#xff1a; 為豐富HarmonyOS對云端開發的支持、實現端云聯動&#xff0c;DevEco Studio推出了云開發功能&#xff0c;開發者在創建工程時選擇云開發模板&#xff0c;即可在DevEco Studio內同時完成HarmonyOS應用/元服務的端側與云側開發&#xff0c;體驗端云一體化協…

大數據面試題第二期*6

題1、Namenode掛了怎么辦? 方法一&#xff1a;將SecondaryNameNode中數據拷貝到namenode存儲數據的目錄。 方法二&#xff1a;使用importCheckpoint選項啟動namenode守護進程&#xff0c;從而將SecondaryNameNode中數據拷貝到namenode目錄中。 題2、Hadoop 的namenode 宕機怎么…

論文代碼解讀STPGNN

1.前言 本次代碼文章來自于《2024-AAAI-Spatio-Temporal Pivotal Graph Neural Networks for Traffic Flow Forecasting》&#xff0c;基本模型結構如下圖所示&#xff1a; 文章講解視頻鏈接 代碼開源鏈接 接下來就開始代碼解讀了。 2.代碼解讀 class nconv(nn.Module):de…

NDIS Filter開發-網絡數據的傳輸

和NIC小端口驅動不同的是&#xff0c;無需考慮網絡數據具體是如何傳輸的&#xff0c;只需要針對NBL進行處理即可。Filter驅動程序可以啟動發送請求和接收指示&#xff0c;或“過濾”其他驅動程序的請求和指示。Filter模塊堆疊在微型端口適配器上。 驅動程序堆棧中的Filter模塊…

谷粒商城實戰(033 業務-秒殺功能4-高并發問題解決方案sentinel 1)

Java項目《谷粒商城》架構師級Java項目實戰&#xff0c;對標阿里P6-P7&#xff0c;全網最強 總時長 104:45:00 共408P 此文章包含第326p-第p331的內容 關注的問題 sentinel&#xff08;哨兵&#xff09; sentinel來實現熔斷、降級、限流等操作 騰訊開源的tendis&#xff0c…

ctfshow web

【nl】難了 <?php show_source(__FILE__); error_reporting(0); if(strlen($_GET[1])<4){echo shell_exec($_GET[1]); } else{echo "hack!!!"; } ?> //by Firebasky //by Firebasky ?1>nl //先寫個文件 ?1*>b //這樣子會把所有文件名寫在b里…

JSON 無法序列化

JSON 無法序列化通常出現在嘗試將某些類型的數據轉換為 JSON 字符串時&#xff0c;這些數據類型可能包含不可序列化的內容。 JSON 序列化器通常無法處理特定類型的數據&#xff0c;例如日期時間對象、自定義類實例等。在將數據轉換為 JSON 字符串之前&#xff0c;確保所有數據都…

clickhouse學習筆記(三)常見表引擎

目錄 一、 MergeTree系列引擎 1、MergeTree 數據TTL &#xff08;1&#xff09; 列級別 TTL &#xff08;2&#xff09; 表級別 TTL 存儲策略 2、ReplacingMergeTree 3、CollapsingMergeTree 4、VersionedCollapsingMergeTree 5、SummingMergeTree 6、AggregatingMe…

「動態規劃」如何求地下城游戲中,最低初始健康點數是多少?

174. 地下城游戲https://leetcode.cn/problems/dungeon-game/description/ 惡魔們抓住了公主并將她關在了地下城dungeon的右下角。地下城是由m x n個房間組成的二維網格。我們英勇的騎士最初被安置在左上角的房間里&#xff0c;他必須穿過地下城并通過對抗惡魔來拯救公主。騎士…

【Text2SQL 論文】C3:使用 ChatGPT 實現 zero-shot Text2SQL

論文&#xff1a;C3: Zero-shot Text-to-SQL with ChatGPT ???? arXiv:2307.07306&#xff0c;浙大 Code&#xff1a;C3SQL | GitHub 一、論文速讀 使用 ChatGPT 來解決 Text2SQL 任務時&#xff0c;few-shots ICL 的 setting 需要輸入大量的 tokens&#xff0c;這有點昂貴…