博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Palindrome Linked List leetcode
阅读量:7169 次
发布时间:2019-06-29

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

Given a singly linked list, determine if it is a palindrome.

Follow up:

Could you do it in O(n) time and O(1) space?

 

 to see which companies asked this question

 
思路:
1.利用快慢两个指针找到中间结点
2.从中间结点下一个结点开始逆置链表,得到新的链表
3.新的链表与原来链表依次比较结点,如有不同,return false
 
思路很清晰,代码直接写在leetcode网站上了,没有调试,一次性AC通过,很有成就感
bool isPalindrome(ListNode* head) {    if (head == nullptr || head->next == nullptr)        return true;    // 寻找中间结点    ListNode *slow = head;    ListNode *fast = head;    while (fast->next != nullptr && fast->next->next != nullptr)    {        slow = slow->next;        fast = fast->next->next;    }    // 逆置后部分链表    ListNode *newList = slow->next;    ListNode *curNode = slow->next->next;    newList->next = nullptr;    while (curNode != nullptr)    {        ListNode *temp = curNode->next;        curNode->next = newList;        newList = curNode;        curNode = temp;    }    // 依次比较    while (newList != nullptr)    {        if (newList->val != head->val)            return false;        newList = newList->next;        head = head->next;    }    return true;}

 

转载于:https://www.cnblogs.com/sdlwlxf/p/5096861.html

你可能感兴趣的文章
linux下的软硬链接
查看>>
【JAVA的 IO流之FileInputStream和FileOutputStream】
查看>>
远程连接mysql 授权方法详解
查看>>
FreeBSD网络配置
查看>>
@synthesize window=_window; 的理解
查看>>
Greenlet理解要点
查看>>
罗森伯格应邀主讲CDCC百家大讲堂38期
查看>>
How to Install Nextcloud 13 Server on Debian 9
查看>>
[深入理解文件系统之一] IO系统调用
查看>>
Java之implements
查看>>
【资料收集】林内域或者林间域之间的账户、计算机迁移
查看>>
更新windows SID工具,对于虚拟机复制很有用
查看>>
安装TOMCAT
查看>>
Linux网络命令
查看>>
-bash: lsof: command not found 解决方法
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
查看>>
大家技术探讨
查看>>
使用Myeclipse自带的xFire来实现WebService
查看>>
《UNIX环境高级编程》apue.h 头文件的问题
查看>>
系统分析师证书求挂靠,请联系qq 369681392
查看>>