LeetCode 234. Palindrome Linked List
来源:互联网 发布:stm32和51编程一样吗 编辑:程序博客网 时间:2024/05/29 04:28
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?
一,算法分析
大体思想是利用快慢两个指针找到中间节点,然后将后面半个链表进行逆转;依次与前半部分比较,若相等则说明是回文串;
二,C语言实现
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *reverseList(struct ListNode *head){ struct ListNode *p,*q; p=head->next; head->next=NULL; while(p!=NULL){ q=p->next; p->next=head; head=p; p=q; } return head;}bool isPalindrome(struct ListNode* head) { struct ListNode *fast,*slow,*middle; if(head==NULL || head->next==NULL) return true; fast=head; slow=head; while(fast->next!=NULL && fast->next->next!=NULL){ slow=slow->next; fast=fast->next->next; } middle = reverseList(slow->next); slow->next=NULL;//这个非常关键,否则下面的while循环死掉了 while(middle!=NULL && head!=NULL){//这里应该是判断两个,有一个为NULL就停止 if(head->val!=middle->val) return false; head=head->next; middle=middle->next; } return true;}
重要的是一些边界问题的确认,与循环截止条件的设置。
0 0
- [leetcode] 234.Palindrome Linked List
- [LeetCode]234.Palindrome Linked List
- [leetcode] 234.Palindrome Linked List
- 【leetcode】234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [leetcode] 234. Palindrome Linked List
- 234. Palindrome Linked List LeetCode
- LeetCode--234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- leetcode 234. Palindrome Linked List
- LeetCode *** 234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- leetcode-234. Palindrome Linked List
- LeetCode-234.Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [Leetcode]234. Palindrome Linked List
- 【leetcode】234. Palindrome Linked List
- Android服务器配置编译指南
- 欢迎使用CSDN-markdown编辑器
- C语言实现通讯录
- Java常用类源码分析_DateFormat类
- 用python把AuroraGT的结果导成lua
- LeetCode 234. Palindrome Linked List
- 半数集问题
- thinkphp-javascript ajax上传后台 post接收不到的原因
- typedef/结构体/枚举/
- 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- Java常用类源码分析_SimpleDateFormat
- ios-显示LCD效果
- Android---Service Timer之执行周期任务
- emacs与vi对比教程