单链表相关面试题
单链表相关面试题
7.链表的回文结构
链表的回文结构_牛客题霸_牛客网 (nowcoder) /*
解题思路:
此题可以先到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
*/
代码语言:javascript代码运行次数:0运行复制class PalindromeList {
public:
bool chkPalindrome(Li
单链表相关面试题
代码语言:javascript代码运行次数:0运行复制/* 解题思路: 此题可以先到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。 */
class PalindromeList {
public:
bool chkPalindrome(Listode* A) {
if (A == ULL || A->next == ULL)
return true;
Listode* slow, *fast, *prev, *cur, *nxt;
slow = fast = A;
//到中间节点
while (fast && fast->next)
{
slow = slow->next;
fast = fast->next->next;
}
prev = ULL;
//后半部分逆置
cur = slow;
while (cur)
{
nxt = cur->next;
cur->next = prev;
prev = cur;
cur = nxt;
}
//逐点比对
while (A && prev)
{
if (A->val != prev->val)
return false;
A = A->next;
prev = prev->next;
}
return true;
}
};
代码语言:javascript代码运行次数:0运行复制/* 此题也可以先把链表中的元素值全部保存到数组中,然后再判断数组是否为回文。不建议使用这种解法,因为如果没有告诉链表最大长度,则不能同此解法 */
class PalindromeList {
public:
bool chkPalindrome(Listode* A) {
// write code here
int a[900] = {0};
Listode* cur = A;
int n = 0;
//保存链表元素
while(cur)
{
a[n++] = cur->val;
cur = cur->next;
}
//判断数组是否为回文结构
int begin = 0, end = n-1;
while(begin < end)
{
if(a[begin] != a[end])
return false;
++begin;
--end;
}
return true;
}
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:202-11-22,如有侵权请联系 cloudcommunity@tencent 删除数组intnullreturn链表 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-28 09:16:42
上一篇:单链表OJ题——10.环形链表2
下一篇:数组相关面试题
推荐阅读
留言与评论(共有 15 条评论) |
本站网友 qq尾巴病毒 | 8分钟前 发表 |
分享自作者个人站点/博客 | |
本站网友 andamiro | 27分钟前 发表 |
*prev | |
本站网友 福州ktv团购 | 30分钟前 发表 |
*fast | |
本站网友 上海锦江旅行社 | 23分钟前 发表 |
则即为回文 | |
本站网友 容县政府网 | 30分钟前 发表 |
原始发表:202-11-22 | |
本站网友 过敏性皮肤炎 | 2分钟前 发表 |
*prev | |
本站网友 hztxt | 22分钟前 发表 |
不建议使用这种解法 | |
本站网友 治疗口臭 | 14分钟前 发表 |
end = n-1; while(begin < end) { if(a[begin] != a[end]) return false; ++begin; --end; } return true; } };本文参与 腾讯云自媒体同步曝光计划 | |
本站网友 iv是几 | 0秒前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看数组intnullreturn链表 | |
本站网友 十大碱性食物排名 | 22分钟前 发表 |
*nxt; slow = fast = A; //到中间节点 while (fast && fast->next) { slow = slow->next; fast = fast->next->next; } prev = ULL; //后半部分逆置 cur = slow; while (cur) { nxt = cur->next; cur->next = prev; prev = cur; cur = nxt; } //逐点比对 while (A && prev) { if (A->val != prev->val) return false; A = A->next; prev = prev->next; } return true; } }; /* 此题也可以先把链表中的元素值全部保存到数组中 | |
本站网友 企业管理咨询 | 18分钟前 发表 |
bool chkPalindrome(Listode* A) { // write code here int a[900] = {0}; Listode* cur = A; int n = 0; //保存链表元素 while(cur) { a[n++] = cur->val; cur = cur->next; } //判断数组是否为回文结构 int begin = 0 | |
本站网友 记忆航班 | 26分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看数组intnullreturn链表 | |
本站网友 去除红血丝的偏方 | 30分钟前 发表 |
最近前后两部分一一比对 | |
本站网友 三吱儿 | 22分钟前 发表 |
原始发表:202-11-22 |