Leetcode234 单链表+回文判断
来源:互联网 发布:淘宝二手手机店铺推荐 编辑:程序博客网 时间:2024/06/04 19:15
题意:给定一个单链表,问该单链表是否是回文单链表
要求:时间复杂度O(n),空间复杂度O(1)
题解:首先取单链表中间结点,将原单链表分成两部分,然后将后边一半逆置,再将两个链表一一对比,看看元素是否相等。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* midNode(ListNode* p){ ListNode* fast=p; ListNode* slow=p; while(fast->next!=NULL&&fast->next->next!=NULL){ //奇数时指向中间,偶数时指向中间偏右那个 fast=fast->next->next; slow=slow->next; } fast=slow->next; slow->next=NULL; return fast; } ListNode* reverseNode(ListNode* p){ ListNode* current; ListNode* pnext; ListNode* prev; current=p; pnext=current->next; current->next=NULL; while(pnext){ prev=pnext->next; pnext->next=current; current=pnext; pnext=prev; } p=current; return p; } bool isPalindrome(ListNode* head) { if(head==NULL||head->next==NULL){ return true; } //先找出中间那个数 ListNode* mid=midNode(head); mid=reverseNode(mid); ListNode* cur=head; while(cur!=NULL&&mid!=NULL){ if(cur->val!=mid->val) return false; cur=cur->next; mid=mid->next; } return true; }};
0 0
- Leetcode234 单链表+回文判断
- leetcode234---Palindrome Linked List(回文链表)
- 单链表回文结构判断
- 判断单链表回文
- 判断单链表是否为回文
- 判断单链表是否为回文
- 判断回文
- 回文判断
- 判断回文
- 判断回文
- 回文判断
- 回文判断
- 判断回文!
- 判断回文
- 回文判断
- 判断回文
- 回文判断
- 回文判断
- HDU 5602/BC 67C Black Jack
- FIR with FPGA[1].全并行FIR实现
- Heroku部署PHP应用
- springmvc + jquery datatable + ajax实现动态分页查询
- 为什么要超越Hadoop(书摘)
- Leetcode234 单链表+回文判断
- Android 带固定图片的EditText
- 《笨办法学Python》 第27课手记
- 如何在运行时改变App的图标
- jQuery .tmpl(), .template()学习
- Android 简单欢迎页面设计
- 计算机网络1--基础介绍
- go 用结构解析XML
- 背包九讲(详细+(自己理解的代码))