• 力扣234.回文链表


    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

    示例 1:

    输入:head = [1,2,2,1]
    输出:true
    

    示例 2:

    输入:head = [1,2]
    输出:false

     解题思路:快慢指针法

    1.首先定义两个指针从头节点开始,一个快指针,一个慢指针(快指针一次走两步,慢指针一次走一步)。

    2.当快指针走到NULL时,慢指针刚好走到链表中间。

    3.反转中间链表后面的节点。

    4.定义两个指针,一个从头结点开始,一个从反转后的链表头节点开始,向后遍历比较是否是回文链表。

     * struct ListNode {

     *     int val;

     *     struct ListNode *next;

     * };

     */

    struct ListNode* reverse (struct ListNode*head)

    {

        struct ListNode*pre=NULL;

        struct ListNode*cur=head;

        while (cur!=NULL)

        {

            struct ListNode*next=cur->next;

            cur->next=pre;

            pre=cur;

            cur=next;

        }

        return pre;

    }

    bool isPalindrome(struct ListNode* head){

        struct ListNode*p=head;

        struct ListNode*q=head;

        while (p->next!=NULL&&p->next->next!=NULL)

        {

            p=p->next->next;

            q=q->next;

        }

        struct ListNode*z=head;

        struct ListNode*s;

        s=reverse(q->next);

        while (s!=NULL)

        {

            if (z->val!=s->val)

            {

                return false;

            }

            z=z->next;

            s=s->next;

        }

        return true;

    }

  • 相关阅读:
    贪心-根据身高重建队列
    mac vscode没有写入权限/无法自动更新
    k8S-调度器
    2021年度总结 | 葡萄城软件开发技术回顾(下)
    位运算技巧及leetcode相关例题Java实现
    pytho-numpy-数组切片存取元素
    ffmpeg 安装教程
    搭建hbase集群环境
    资本+商业模式+中国制造的出海跨境电商,走向世界!(Starday)
    【项目实战:核酸检测平台】第四章 冲锋陷阵
  • 原文地址:https://blog.csdn.net/qq_70799748/article/details/127824550