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

网站设计的技能上海哪家做网站关键词排名

网站设计的技能,上海哪家做网站关键词排名,安阳网站设计哪家好,网站的tdk指的是什么意思问题 234. 回文链表 - 力扣(LeetCode) 思路 首先,我需要找到链表的中点,这里使用快慢指针技巧 - slow指针每次走一步,fast指针每次走两步。当fast到达链表尾部时,slow就正好在中间位置。 然后关键的一步…

问题

234. 回文链表 - 力扣(LeetCode)

思路

首先,我需要找到链表的中点,这里使用快慢指针技巧 - slow指针每次走一步,fast指针每次走两步。当fast到达链表尾部时,slow就正好在中间位置。

然后关键的一步是处理链表长度的奇偶性:

  • 如果fast不为空,说明链表长度是奇数,这时中间节点不应该参与比较,所以我从slow的下一个节点开始反转
  • 如果fast为空,说明链表长度是偶数,直接从slow开始反转后半部分

接着我用递归方式反转后半部分链表 - 递归到链表末尾,然后在回溯过程中重新连接指针,把方向反过来。

最后,比较原链表前半部分与反转后的后半部分,如果它们对应位置的值都相同,那么这就是一个回文链表。

这个算法的时间复杂度是O(n),我们只需要遍历链表常数次。空间复杂度主要来自递归调用栈,是O(n/2),也就是O(n)

读者可能出现的错误写法

class Solution {
public:bool isPalindrome(ListNode* head) {ListNode* slow = head;ListNode* fast = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}ListNode newlist = reserve(slow->next);bool result = compare(head,newlist);return result;}ListNode* reserve(ListNode* head){if(!head || !head->next){return head;}ListNode* newHead = reserve(head->next);head->next->next = head;head->next = nullptr;return newHead;}bool compare(ListNode* head1,ListNode* head2){while(head1&&head2){if(head1->val == head2->val){head1 = head1->next;head2 = head2->next;}else{return false;}}return true;}
}; 

这个方法有一个问题,对于奇数长度的链表会出错。

问题在于:当链表长度为奇数时,中间节点不应该参与比较。但你的代码中,直接反转了从中点开始的所有节点,导致前半部分比后半部分多出节点。也就是说,当快慢指针走完之后,需要进行判断是否是奇数,如果是奇数就直接跳过slow->next,如果不是奇数就使用slow

正确写法

class Solution {
public:bool isPalindrome(ListNode* head) {ListNode* slow = head;ListNode* fast = head;ListNode* newlist = nullptr;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}if(fast){newlist = reserve(slow->next);}else{newlist = reserve(slow);}bool result = compare(head,newlist);return result;}ListNode* reserve(ListNode* head){if(!head || !head->next){return head;}ListNode* newHead = reserve(head->next);head->next->next = head;head->next = nullptr;return newHead;}bool compare(ListNode* head1,ListNode* head2){while(head1 && head2){if(head1->val == head2->val){head1 = head1->next;head2 = head2->next;}else{return false;}}return true;}
};
http://www.dtcms.com/a/434941.html

相关文章:

  • 酒店网站建设报价详情wordpress %1$s
  • 网站做支付要多少钱做产品代理上哪个网站好
  • RHEL安装
  • 列出网站开发建设的步骤通过网站建设提高企业的
  • leetcode 77 组合
  • 推广系统建站高清视频素材下载网站
  • freertos教程
  • C语言计算n个矩阵乘法
  • 做导航网站淘宝客做销量的网站有哪些
  • 注册免费域名网站wordpress仿百度搜索主题
  • c++MFC 用boost.asio库写的串口功能,包含发送、异步接收、打开、重连、关闭功能
  • 万用表和示波器使用
  • OpenJDK 和 Oracle JDK 该如何选择
  • 【开题答辩全过程】以 python基于Hadoop的服装穿搭系统的设计与实现为例,包含答辩的问题和答案
  • Spark专题-第三部分:性能监控与实战优化(2)-分区优化
  • port-isolate 概念及题目
  • 24.grep 使用手册
  • 俄罗斯网站设计电商网站开发设计方案
  • 在duckdb 1.4中编译和使用postgresql协议插件duckdb-pgwire
  • 鸿蒙开发2--常用UI组件与@State状态管理入门
  • Spring Boot 配置属性松散绑定
  • 重庆网站产品推广浙江省建设厅证书查询
  • 【代码随想录day 32】 力扣 509.斐波那契数列
  • 工信部网站备案怎么登录青岛公司做网站的价格
  • C语言中的scanf函数(头文件、格式控制、取地址符号分析)
  • 洛谷——P2437 蜜蜂路线
  • 网页制作网站花店水头网站建设
  • 在网站上做承诺书厦门在线制作网站
  • 国家认可的赚钱平台东莞seo网络推广专
  • 安装网站wordpress加个微信登录