江西网站设计哪家强,h5视频直播,郑州路普科技,网站开发者的常用工具目录
思路一#xff1a;链表翻转
思路二#xff1a;快慢指针#xff0c;分别从头和尾间开始比较 本题是没有对C的支持的#xff0c;但因为CPP支持C#xff0c;所以这里就用C写了#xff0c;可以面向更多用户
链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 思路一链表翻转
思路二快慢指针分别从头和尾间开始比较 本题是没有对C的支持的但因为CPP支持C所以这里就用C写了可以面向更多用户
链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 思路一链表翻转 简单的想想整形我们怎么比较就是将整形A 依次取尾放到整形B中。
int a 121;
int t a;
int b 0;
while(t)
{int temp t % 10;b b*10temp;t / 10;
}
if(b a)
{printf(Yes);
} 这里我们也借用这个思路先遍历一遍链表取出每个节点的val放到整形A中在将链表翻转再次取出每个节点的val,放到整形B中进行比较。
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};
class PalindromeList {
public:bool chkPalindrome(ListNode* A) {// write code hereint ret1 0; //原链表int ret2 0;struct ListNode* n1 NULL;struct ListNode* n2 A;struct ListNode* n3 A-next;while(n2){ret1 ret1 * 10 n2-val;n2-next n1;n1 n2;n2 n3;n3 n3-next;}while(n1){ret2 ret2* 10 n1-val;n1 n1-next;}if(ret1 ret2){return true;}return false;}
};思路二快慢指针分别从头和尾间开始比较 这里的思路是在思路一的基础上在进了一步让链表从中间到尾进行翻转进行比较。 struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};
class PalindromeList {
public://找出中间节点ListNode* MiddleList(ListNode* phead){ListNode* fast phead;ListNode* slow phead;while(fast fast-next){fast fast-next-next;slowslow-next;}return slow;}//将中间节点到尾节点逆置ListNode* ReverseList(ListNode* phead){ListNode* n1 NULL;ListNode* n2 phead;ListNode* n3 phead-next;while(n2){n2-next n1;n1 n2;n2 n3;n3 n3-next;}return n1;}bool chkPalindrome(ListNode* phead) {// write code hereListNode* mid MiddleList(phead);ListNode* rev ReverseList(phead);ListNode* cur phead;while(cur rev){if(cur-val ! rev-val){return false;}cur cur-next;rev rev-next;}return true;}
};