NC96 判断一个链表是否为回文结构
出息了,这波想到递归其他大多数都是链表生成头尾链表
[https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f?tpId=188&&tqId=38562&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking]
//递归
描述
给定一个链表,请判断该链表是否为回文结构。
回文是指该字符串正序逆序完全一致。
数据范围: 链表节点数 0 \le n \le 10^70≤n≤10
7
,链表中每个节点的值满足 |val| \le 10^7∣val∣≤10
7
示例1
输入:
{1}
返回值:
true
示例2
输入:
{2,1}
返回值:
false
说明:
2->1
示例3
输入:
{1,2,2,1}
返回值:
true
说明:
1->2->2->1
class Solution {
public:
/**
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool How=false;
struct ListNode*a;
bool d(struct ListNode* b){
if(b==NULL){
return true;
}
else{
How=d(b->next);
if(a->val!=b->val){//a为全局变量,每次把a移动,因为是递归所以b每次就返回上有个,回文直接就比较了
How=false;
}
a=a->next;
}
return How;
}
bool isPail(struct ListNode* head ) {
// write code here
a=head;
struct ListNode* b=head;
return d(b);
}
};
还有方法就是转换成两个链表