234. Palindrome Linked List(C语言版本)
来源:互联网 发布:华通云数据业界排名 编辑:程序博客网 时间:2024/06/05 09:27
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?
解题思路:
1 首先,找到该链表的中心。
2 接着,将链表的后半部分反序。
3 接着,将前半部分与后半部分进行比较(只需要比较到一半就可以判断是不是回文)
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool isPalindrome(struct ListNode* head) { if(head == NULL || head->next == NULL) return true; struct ListNode *fast = head; struct ListNode *slow = head; while(fast->next != NULL && fast->next->next != NULL) { fast = fast->next->next; slow = slow->next; } struct ListNode *secondHead = slow->next; slow->next = NULL; struct ListNode *p1 = secondHead; struct ListNode *p2 = p1->next; while(p1 != NULL && p2 != NULL) { struct ListNode *temp = p2->next; p2->next = p1; p1 = p2; p2 = temp; } secondHead->next = NULL; struct ListNode *p = (p2 == NULL?p1:p2); struct ListNode *q = head; while(p != NULL) { if(p->val != q->val) return false; p = p->next; q = q->next; } return true;}
阅读全文
0 0
- 234. Palindrome Linked List(C语言版本)
- 【C语言】LeetCode 234. Palindrome Linked List
- 【LeetCode】 234. Palindrome Linked List C语言
- [C语言][LeetCode][234]Palindrome Linked List
- 【leetcode】234. Palindrome Linked List(Python & C++)
- [leetcode-234]Palindrome Linked List (C)
- [leetcode-234]Palindrome Linked List (C)
- 141. Linked List Cycle(C语言版本)
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 234. Palindrome Linked List
- 自己通过编写tag文件来自定义标签
- Spring Boot 事务的使用
- ftp上传下载文件详解
- socket实例
- JavaScript日期字符串和时间戳转换
- 234. Palindrome Linked List(C语言版本)
- 一个好用的沉浸式状态栏以及使用方法
- C++学习7:用typeid().name()获取类型名
- Android 提取用户通讯录以及短信,兼容高低版本
- Html5笔记
- 关于状态栏的电量百分比
- css3新技术应用合集
- 【Python学习系列二十】scikit-learn库模型持久化
- 【备忘】2017最新传智播客黑马java 32期基础就业班视频教程无KEY