当前位置: 首页 > news >正文

回文链表 LeetCode热题100

题目

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

思路

利用快慢指针找到链表中间节点,反转后半段链表。前半段从头节点开始与后半段比较。 注意当链表节点为奇数个数时中间节点不作为后半段进行翻转(可以不处理),注意快慢指针的跳出时机(快指针每跳一步都要判断是否到头了)

代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:bool isPalindrome(ListNode* head) {if(head->next==nullptr){return true;}ListNode *first=head,*second = head,*pre;bool flag = false;while(first){first = first->next;if(first==nullptr){flag = true;break;}first=first->next;second = second->next;}if(flag){second = second->next;}ListNode *last=nullptr,*next;while(second){next = second->next;second->next = last;last = second;second=next;}pre = head;ListNode *revert = last;while(last){if(pre->val!=last->val){return false;}pre=pre->next;last = last->next;}return true;}
};
http://www.lryc.cn/news/107635.html

相关文章:

  • 如何在群晖NAS中使用cpolar内网穿透
  • 无头单向不循环链表和带头双向循环链表的创建
  • 超简单的fastapi链接websocket用例
  • MySQL详解
  • Vue [Day2]
  • 【前端|Javascript第1篇】一文搞懂Javascript的基本语法
  • 【Linux命令200例】cp用于复制文件和目录(常用)
  • C高级_第二讲_shell指令和shell脚本_递归练习
  • 静态路由综合实验
  • Spring核心IOC控制反转思想-----Spring框架
  • 中小企业如何做好MES管理系统实施建设
  • java环境搭建 Ubuntu Linux
  • 微信小程序使用mp-html遇到的问题并解决
  • 【VTK】基于读取出来的 STL 模型,当用户点击鼠标左键时,程序将获取点击位置的点,显示其坐标,并设置它为模型的旋转原点
  • 【第一阶段】kotlin的when表达式
  • C#中Convert.ToInt32() 和 int.Parse()的区别
  • 安全学习DAY14_JS信息打点
  • windows下配置vue开发环境
  • AndroidTV 获取焦点View放大效果实现方式
  • 访问者模式——操作复杂对象结构
  • 指针经典笔试题强训(附图详解)
  • Python:列表(list)与元组(tuple)
  • 常见的相似性度量方法
  • Day06-JS高级编程
  • 针对高可靠性和高性能优化的1200V硅碳化物沟道MOSFET
  • 开发框架软件公司:与之携手,共同开启办公流程化之路!
  • openCV C++环境配置
  • 8.3 作业 c高级
  • django实现部门表的增删改查界面
  • Tomcat的介绍和安装配置、eclipse中动态web项目的创建和运行、使用IDEA创建web项目并运行