博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode刷题笔记 234. 回文链表
阅读量:3750 次
发布时间:2019-05-22

本文共 1526 字,大约阅读时间需要 5 分钟。

234. 回文链表

知识点:贪心、指针

时间:2020年10月22日
题目链接:

题目

请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false

示例 2:

输入: 1->2->2->1
输出: true

进阶:

你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

解法

  1. 与类似
  2. 找到原链表的中点 快慢指针
  3. 右半边链表逆序
  4. 两个链表比较

代码

#include 
#include
using namespace std;struct ListNode {
int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {
}};class Solution {
public: ListNode* getMidNode(ListNode * head){
ListNode* slow = head; ListNode* fast = head; while(fast->next!=nullptr&&fast->next->next!=nullptr){
slow = slow->next; fast = fast->next->next; } return slow; } ListNode* reverseNode(ListNode* head){
ListNode* pre = nullptr; ListNode* cur = head; while(cur!=nullptr){
ListNode* next = cur->next; cur->next = pre; pre = cur; cur = next; } return pre; } bool isPalindrome(ListNode* head) {
if(head==nullptr){
return 1;} ListNode* midnode = getMidNode(head); ListNode* reverse = reverseNode(midnode->next); ListNode* tmp1 = head; ListNode* tmp2 = reverse; while(tmp2 != nullptr){
if(tmp1->val != tmp2->val){
return false; } tmp1 = tmp1->next; tmp2 = tmp2->next; } return true; }};int main(){
ListNode node1(1); ListNode node2(1); node1.next = &node2; Solution s; cout<

今天也是爱zz的一天哦!

转载地址:http://xmdsn.baihongyu.com/

你可能感兴趣的文章
ANSYS——杆单元简介与示例(含新版本2019版本杆实常数设置、ANSYS help的使用、单元列表使用的举例)
查看>>
ANSYS——后处理中单元表(ELEMENT table)的作用、创建、使用
查看>>
在VScode上配置golang的开发环境
查看>>
leetcode每日一题---680. 验证回文字符串 Ⅱ
查看>>
leetcode每日一题---15. 三数之和
查看>>
leetcode每日一题---面试题 16.18. 模式匹配
查看>>
地主的钱袋
查看>>
招新成绩统计
查看>>
webpack
查看>>
Nodejs基础
查看>>
go部署
查看>>
配置swagger--go语言
查看>>
vue源码解析(1)--------双向绑定数据(未完)
查看>>
打印等腰三角形
查看>>
打印杨辉三角
查看>>
java中String类中常用方法
查看>>
安装Android Studio时没有Sdk选项
查看>>
flutter学习笔记:第一个APP应用
查看>>
哲学家进餐问题
查看>>
Python-Opencv学习总结(一):图像读取和获取图像特征
查看>>