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

lc hot 100之:回文链表

 我觉得这题是很经典,用到了两个很重要的链表算法【反转链表】和【找中点】。这两个算法用到的很多,大家写链表题的时候也可以从这两个开始想。

思路是:反转后半段链表,这样得到两个链表,双指针分别遍历这两个链表是否相同。

代码:

class Solution {
public:ListNode* reverse(ListNode* head){ListNode* pre=nullptr;ListNode* cur=head;while(cur!=nullptr){ListNode* nxt=cur->next;cur->next=pre;pre=cur;cur=nxt;}return pre;} ListNode* findMiddle(ListNode* head){ListNode* slow=head;ListNode* fast=head;while(fast->next&&fast->next->next){fast=fast->next->next;slow=slow->next;}return slow;}bool isPalindrome(ListNode* head) {ListNode* middle=findMiddle(head);ListNode* head2=reverse(middle);//后半段翻转while(head&&head2){if(head->val!=head2->val)return false;head=head->next;head2=head2->next;}return true;}
};

其实对于 【反转链表】和【找中点】这两个算法,也能讲解很多。对于初学者来说这两个算法很难想到,建议多写几遍,体会一下链表与数组不同的处理步骤。

简单说一下这两个算法吧:

【反转链表】其实是之前提到的【三指针】:pre,cur,next。要多想象画图理解一下。

【找重点】也是之前提到的【快慢双指针】思想,让快指针跑两倍速,这样他到终点时慢指针正好到中间~

加油加油!今天是525嘻嘻嘻!!!大家一起加油!!

http://www.xdnf.cn/news/8811.html

相关文章:

  • 探索容器技术:Docker与Kubernetes的实践指南
  • TiDB:从快速上手到核心原理与最佳实践
  • FreeRTOS--信号量
  • JavaEE 网络编程套接字详解与实战示例
  • QNAP NEXTCLOUD 域名访问
  • GO语言基础4 Errors 报错
  • Redis之金字塔模型分层架构
  • go实现钉钉三方登录
  • 开源 OIDC(OpenID Connect)身份提供方(IdP)、iam选型
  • 历年安徽大学保研上机真题
  • AWS EC2 使用Splunk DB connect 连接 RDS mysql
  • ​​C++ 中 protected/public/private 访问控制修饰符的区别​
  • 白皮精读:全国统一数据资产登记体系建设白皮书【附全文阅读】
  • 使用Vue3制作一款个性化上传组件
  • 刷leetcode hot100返航版--栈和队列5/24
  • java多态的学习笔记
  • 从工程实践角度分析H.264与H.265的技术差异
  • icexmoon-tree
  • C语言中的寄存器:理解与应用
  • c/c++的opencv椒盐噪声
  • 【python实战】二手房房价数据分析与预测
  • 日期组合统计
  • 基于MATLAB编程针对NCV检测数据去漂移任务的完整解决方案
  • Java中关于数组的使用(下)
  • NXP应用随记(九):M7内核的Hardfault相关认知
  • PTA刷题笔记(纠细节 有详解)
  • 力扣 74.搜索二维矩阵
  • Vue.extend
  • 工业自动化通信完全指南:西门子/三菱PLC对接
  • 【数据集】30 m地表温度LST数据集