AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

LeetCode 234. 回文链表    原题链接    简单

作者: 作者的头像   Yuze_Neko ,  2025-03-23 13:51:05 · 福建 ,  所有人可见 ,  阅读 7


0


先反转后半链表,然后遍历,考虑长度为1的特俗情况

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        ListNode* current = head;
        int cnt = 0;
        if(current == NULL) return false;
        while(current != NULL)
        {
            cnt ++;
            current = current->next;
        }
        if(cnt <= 1) return true;
        current = head;
        int nowcnt = 1;
        if(cnt % 2 == 0)
        {
            while(nowcnt < cnt / 2 + 1)
            {
                current = current->next;
                nowcnt ++;
            }
        }
        else
        {
            while(nowcnt < cnt / 2 + 2)
            {
                current = current->next;
                nowcnt ++;
            }
        }
        ListNode* pre = NULL;
        ListNode* temp = NULL;
        while(current != NULL)
        {
            temp = current->next;
            current->next = pre;
            pre = current;
            current = temp;
        }

        while(pre != NULL)
        {
            if(pre->val != head->val) return false;
            pre = pre->next;
            head = head->next;
        }
        return true;
    }
};

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息