【數據結構OJ題】鏈表的回文結構

原題鏈接:https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId=49&&tqId=29370&rp=1&ru=/activity/oj&qru=/ta/2016test/question-ranking

目錄

1. 題目描述

2. 思路分析

3. 代碼實現


1. 題目描述

?

2. 思路分析

在做這道題之前,我們首先得知道什么是“回文”。

回文就是指正讀和反讀都相同的字符序列為“回文”,如“abba”、“abccba”、12321123321是“回文”,“abcde”和“ababab”則不是“回文”。

知道了回文的意思后,我們開始分析題目!

先找到中間結點,然后把后半部分逆置,最后對前后兩部分一一比對如果結點的值全部相同,則即為回文否則就不是回文

如果鏈表是回文結構如下圖(左半部分為奇數個結點的情況,右半部分為偶數個結點的情況)

如果有小伙伴不知道怎么求鏈表的中間結點,可以看看這篇文章:

https://blog.csdn.net/m0_62531913/article/details/132309395?spm=1001.2014.3001.5502

如果有小伙伴不知道怎么將鏈表逆置,可以看看這篇文章:

https://blog.csdn.net/m0_62531913/article/details/132297310?spm=1001.2014.3001.5502

3. 代碼實現

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:struct ListNode* middleNode(struct ListNode* head){struct ListNode *slow=head,*fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;}struct ListNode* reverseList(struct ListNode* head){struct ListNode *n1,*n2,*n3;n1=NULL;n2=head;if(n2)n3=n2->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3)n3=n3->next;}return n1;}bool chkPalindrome(ListNode* head) {struct ListNode* mid=middleNode(head);struct ListNode* rmid=reverseList(mid);while(head&&rmid){if(head->val!=rmid->val){return false;}else{head=head->next;rmid=rmid->next;}}return true;}
};

?

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

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

相關文章

re中的match和search有什么區別?

問題:請說明以下re模塊中的match和search有什么區別? re.match()與re.search()的區別 re.match()只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,結果返回None,而re.search()匹配整個字符串,直到找到一個匹配 re.search() re.search()掃描整個字符串并…

老師如何制作二維碼分班查詢系統?技術老師分享的創建框架值得借鑒

作為一名班主任,開學前需要搞定分班問題,可以通過制作一個分班二維碼查詢系統,讓學生和家長可以通過掃描二維碼快速查到自己的分班信息,分享一下我制作的過程,希望對老師們有幫助(結尾有驚喜)&a…

內網穿透——使用Windows自帶的網站程序建立網站

文章目錄 1.前言2.Windows網頁設置2.1 Windows IIS功能設置2.2 IIS網頁訪問測試 3. Cpolar內網穿透3.1 下載安裝Cpolar3.2 Cpolar云端設置3.3 Cpolar本地設置 4.公網訪問測試5.結語 1.前言 在網上各種教程和介紹中,搭建網頁都會借助各種軟件的幫助,比如…

RP2040開發板自制樹莓派邏輯分析儀

目錄 前言 1 準備工作和前提條件 1.1 Raspberry Pi Pico RP2040板子一個 1.2 Firmware-LogicAnalyzer-5.0.0.0-PICO.uf2固件 1.3 LogicAnalyzer-5.0.0.0-win-x64軟件 2 操作指南 2.1 按住Raspberry Pi Pico開發板的BOOTSEL按鍵,再接上USB接口到電腦 2.2 刷入…

End-to-End Object Detection with Transformers

DERT 目標檢測 基于卷積神經網絡的目標檢測回顧DETR對比Swin Transformer摘要檢測網絡流程DERT網絡架構編碼器概述解碼器概述整體結構object queries的初始化Decoder中的Muiti-Head Self-AttentionDecoder中的Muiti-Head Attention 損失函數解決的問題 基于卷積神經網絡的目標檢…

內網穿透實戰應用——【通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁】

通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁 文章目錄 通過cpolar分享本地電腦上有趣的照片:發布piwigo網頁前言1. 設定一條內網穿透數據隧道2. 與piwigo網站綁定3. 在創建隧道界面填寫關鍵信息4. 隧道創建完成 總結 前言 首先在本地電腦上部署…

Unity - 從PackageManager中安裝內置工具

1.MemoryProfiler 內存分析工具 add from git url :com.unity.memoryprofiler 使用地址記錄:unity3d內存分析工具memory profiler_unity3d memory profile_Marco&GalaxyDragon的博客-CSDN博客 理解Unity Memory Profiler - 知乎

Gradle和Maven的詳細講解和兩者之間的區別

Gradle 詳細介紹 Gradle 是一種基于 Groovy 語言的構建自動化工具,用于構建、測試和部署項目。它使用聲明式的腳本來定義構建過程,允許開發者靈活地配置項目構建。Gradle 使用一種被稱為 Groovy DSL(領域特定語言)的語法&#xf…

mysql知識點+面試總結

目錄 1 mysql介紹 2 數據庫常見語法 3 數據庫表的常見語法 4 其他常見語法(日期,查詢表字段) 5 JDBC開發步驟 6 索引 6.1 索引常見語法 7 常見面試總結 8 java代碼搭建監控頁面 1 mysql介紹 數據庫:存儲在硬盤上的文件系統…

VR虛擬展廳如何將客戶引流到線下?

VR虛擬展廳是一項很不錯的創新技術,將傳統的展覽內容以數字化形式呈現,為參觀者帶來全新的展示體驗,也為企業帶來了全新的宣傳機遇。 線上虛擬展廳目前有著兩種形式,一種是通過三維建模技術、虛擬現實技術等搭建的虛擬展廳&#x…

leetcode 474. 一和零

2023.8.15 class Solution { public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m1, vector<int>(n1,0));//遍歷物品for(string str : strs){int num_0 0;int num_1 0;for(char c : str){if(c 0) num_0;el…

Docker 容器內無法使用vim命令 解決方法

目錄 1. 問題所示2. 原理分析3. 解決方法1. 問題所示 進入Docker容器后 無法使用vim編輯器,出現如下問題:bash: vim: command not found 如圖所示: 想著通過apt-get 安裝vim,出現如下問題: root@b9f0fd330d5b:/# apt-get install vim Reading package lists... Done B…

ZooKeeper介紹

ZooKeeper是一個開放源代碼的分布式協調服務。ZooKeeper的設計目標是將那些復雜且容易出錯的分布式一致性服務封裝起來&#xff0c;構成一個高效可靠的原語集&#xff0c;并以一系列簡單易用的接口提供給用戶使用。 ZooKeeper是一個典型的分布式數據一致性的解決方案&#xff0…

如何通過 Keras 中的活動正則化減少泛化誤差

活動正則化提供了一種鼓勵神經網絡學習原始觀察的稀疏特征或內部表示的方法。 在自動編碼器(稱為稀疏自動編碼器)和編碼器-解碼器模型中尋求稀疏學習表示是很常見的,盡管該方法通常也可用于減少過度擬合并提高模型泛化到新觀察值的能力。 在本教程中,您將發現 Keras API …

spring入門基本介紹及注入方式---詳細介紹

一&#xff0c;spring的簡介 Spring是一個開源框架&#xff0c;它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。 提供了許多功能強大且易于使用的特性&#xff0c;使得開發者能夠更加輕松地構建可維護且可擴展的應用程序&#xff0c;簡單來說: Spring使用基…

kaggle注冊不顯示驗證碼

edge瀏覽器 1.點擊瀏覽器右上角三個點 2.點擊擴展 3.點擊管理擴展 4.點擊獲取Microsoft Edge擴展&#xff0c;在左上角輸入Head Editor 5.輸入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下載后&#xff0c;點保存 成功&#xff01;

星際爭霸之小霸王之小蜜蜂(二)--類的使用

目錄 前言 一、將設置內容寫在一個類里 二、設置小蜜蜂的造型 三、設置貓蜜蜂的參數 四、繪制貓蜜蜂到窗口 總結 前言 昨天我們設置好了窗口&#xff0c;下面我們需要向窗口中添加元素了。 一、將設置內容寫在一個類里 我個人理解書上的意思是要創建一個類&#xff0c;將所有需…

基于CentOS 7 部署社區版Haproxy

HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件&#xff0c;是一款具 備高并發(一萬以上)、高性能的TCP和HTTP負載均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自動故障切換&#xff0c;支 持正則表達式及web狀態統計。 目錄 1…

Linux:shell腳本 正則表達式與AWK

一、正則表達式 由一類特殊字符及文本字符所編寫的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意義&#xff0c;而表示控制或通配的功能&#xff0c;類似于增強版的通配符功能&#xff0c;但與通配符不同&#xff0c;通配符功能是用來處理文件…

【LeetCode每日一題】——128.最長連續序列

文章目錄 一【題目類別】二【題目難度】三【題目編號】四【題目描述】五【題目示例】六【題目提示】七【解題思路】八【時間頻度】九【代碼實現】十【提交結果】 一【題目類別】 哈希表 二【題目難度】 中等 三【題目編號】 128.最長連續序列 四【題目描述】 給定一個未…